JAVA——靜態方法加鎖和非靜態方法加鎖的區別

對象鎖(實例鎖,synchronized

該鎖針對的是該實例對象(當前對象)。
synchronized是對類的當前實例(當前對象)進行加鎖,防止其他線程同時訪問該類的該實例的所有synchronized塊。
每個對象都有一個鎖,且是唯一的

注意:

1.指的是“類的當前實例”, 類的兩個不同實例就沒有這種約束了。

2.鎖住的只是synchronized塊,static synchronized塊鎖不住,而不加鎖的方法更加鎖不住。

 

類鎖(又稱全局鎖,static synchronized

該鎖針對的是類,無論實例出多少個對象,那麼線程依然共享該鎖。
static synchronized是限制多線程中該類的所有實例同時訪問該類所對應的代碼塊

注意:

1.static synchronized並不是關鍵字,只是代表給靜態方法加鎖。

2.鎖住的只是static synchronized塊,synchronized塊鎖不住,而不加鎖的方法更加鎖不住

 

參考博客:https://www.jianshu.com/p/8327c5c15cb8 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章