synchronized含義:
1、synchronized中文意思是同步,也稱之為”同步鎖“。
2、synchronized的作用是保證在同一時刻, 被修飾的代碼塊或方法只會有一個線程執(zhí)行,以達到保證并發(fā)安全的效果。
3、synchronized是Java中解決并發(fā)問題的一種最常用的方法,也是最簡單的一種方法。
synchronized作用:
(1)、原子性:所謂原子性就是指一個操作或者多個操作,要么全部執(zhí)行并且執(zhí)行的過程不會被任何因素打斷,要么就都不執(zhí)行。被synchronized修飾的類或?qū)ο蟮乃胁僮鞫际窃拥模驗樵趫?zhí)行操作之前必須先獲得類或?qū)ο蟮逆i,直到執(zhí)行完才能釋放。
(2)、可見性:**可見性是指多個線程訪問一個資源時,該資源的狀態(tài)、值信息等對于其他線程都是可見的。 **synchronized和volatile都具有可見性,其中synchronized對一個類或?qū)ο蠹渔i時,一個線程如果要訪問該類或?qū)ο蟊仨毾全@得它的鎖,而這個鎖的狀態(tài)對于其他任何線程都是可見的,并且在釋放鎖之前會將對變量的修改刷新到共享內(nèi)存當中,保證資源變量的可見性。
(3)、有序性:有序性值程序執(zhí)行的順序按照代碼先后執(zhí)行。synchronized和volatile都具有有序性,Java允許編譯器和處理器對指令進行重排,但是指令重排并不會影響單線程的順序,它影響的是多線程并發(fā)執(zhí)行的順序性。synchronized保證了每個時刻都只有一個線程訪問同步代碼塊,也就確定了線程執(zhí)行同步代碼塊是分先后順序的,保證了有序性。