對象鎖(實例鎖,synchronized
)
該鎖針對的是該實例對象(當前對象)。synchronized
是對類的當前實例(當前對象)進行加鎖,防止其他線程同時訪問該類的該實例的所有synchronized塊。
每個對象都有一個鎖,且是唯一的。
注意:
1.指的是“類的當前實例”, 類的兩個不同實例就沒有這種約束了。
2.鎖住的只是synchronized塊,static synchronized塊鎖不住,而不加鎖的方法更加鎖不住。
類鎖(又稱全局鎖,static synchronized
)
該鎖針對的是類,無論實例出多少個對象,那麼線程依然共享該鎖。static synchronized
是限制多線程中該類的所有實例同時訪問該類所對應的代碼塊。
注意:
1.static synchronized並不是關鍵字,只是代表給靜態方法加鎖。
2.鎖住的只是static synchronized塊,synchronized塊鎖不住,而不加鎖的方法更加鎖不住