1. 程式人生 > >java 多線程中的鎖的類別及使用

java 多線程中的鎖的類別及使用

ron 靜態方法 log 代碼 targe 對象實例 javase 依賴 監視器

目前在Java中存在兩種鎖機制:

  • synchronized
  • Lock

Lock接口及其實現類是JDK5增加的內容,其作者是大名鼎鼎的並發專家Doug Lea。

數據同步需要依賴鎖,那鎖的同步又依賴誰?

synchronized給出的答案是在軟件層面依賴JVM,

而Lock給出的方案是在硬件層面依賴特殊的CPU指令

Synchronized

其應用層的語義是可以把任何一個非null對象作為"鎖"

當synchronized作用在方法上時,鎖住的便是對象實例(this);

當作用在靜態方法時鎖住的便是對象對應的Class實例,因為Class數據存在於永久帶,因此靜態方法鎖相當於該類的一個全局鎖;

當synchronized作用於某一個對象實例時,鎖住的便是對應的代碼塊。

在HotSpot JVM實現中,鎖有個專門的名字:對象監視器。

參考博客:http://blog.csdn.net/chen77716/article/details/6618779

java 多線程中的鎖的類別及使用