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