當前位置:生活全書館 >

IT科技

> synchronized和lock的異同

synchronized和lock的異同

synchronized和lock的異同如下:

synchronized和lock的異同

1、首先synchronized是java內建關鍵字,在jvm層面,Lock是個java類;

2、synchronized無法判斷是否獲取鎖的狀態,Lock可以判斷是否獲取到鎖;

3、synchronized會自動釋放鎖(a 執行緒執行完同步程式碼會釋放鎖 ;b 執行緒執行過程中發生異常會釋放鎖),Lock需在finally中手工釋放鎖(unlock()方法釋放鎖),否則容易造成執行緒死鎖;

4、用synchronized關鍵字的兩個執行緒1和執行緒2,如果當前執行緒1獲得鎖,執行緒2執行緒等待。如果執行緒1阻塞,執行緒2則會一直等待下去,而Lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,執行緒可以不用一直等待就結束了;

5、synchronized的鎖可重入、不可中斷、非公平,而Lock鎖可重入、可判斷、可公平(兩者皆可);

6、Lock鎖適合大量同步的程式碼的同步問題,synchronized鎖適合程式碼少量的同步問題。

  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/mnlrg5.html