轉自:http://java265.com/JavaProblem/202110/1507.html
下文是筆者收集的關于synchronized與Lock的不同點簡介說明
區別說明
- synchronized是java內置關鍵字,在jvm層面,Lock是個java介面的實作類
- synchronized無法判斷是否獲取鎖的狀態,Lock可以判斷是否獲取到鎖
- synchronized會自動釋放鎖(a 執行緒執行完同步代碼會釋放鎖 ;b 執行緒執行程序中發生例外會釋放鎖),Lock需在finally中手工釋放鎖(unlock()方法釋放鎖),否則容易造成執行緒死鎖
- 用synchronized關鍵字的兩個執行緒1和執行緒2,如果當前執行緒1獲得鎖,執行緒2執行緒等待,如果執行緒1阻塞,執行緒2則會一直等待下去,而Lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,執行緒可以不用一直等待就結束了
- synchronized的鎖可重入、不可中斷、非公平,而Lock鎖可重入、可判斷、可公平(兩者皆可)
- Lock鎖適合大量同步的代碼的同步問題,synchronized鎖適合代碼少量的同步問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327753.html
標籤:Java
上一篇:我的成長記1:手把手教你如何畫出令人稱贊的圖(程式員必讀)
下一篇:HotSpot物件揭秘
