當前位置:首頁 » 編程語言 » java的lock

java的lock

發布時間: 2023-09-22 22:33:52

1. java 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鎖適合代碼少量的同步問題。
7.Lock是一個介面,synchronized是一個關鍵字,synchronized放棄鎖只有兩種情況:①線程執行完了同步代碼塊的內容②發生異常;而lock不同,它可以設定超時時間,也就是說他可以在獲取鎖時便設定超時時間,如果在你設定的時間內它還沒有獲取到鎖,那麼它會放棄獲取鎖然後響應放棄操作。
你明白了嗎?

熱點內容
輝煌標准版伺服器地址 發布:2025-08-13 23:35:14 瀏覽:251
安卓更新後更新包哪裡去了 發布:2025-08-13 23:35:09 瀏覽:821
R2腳本下載 發布:2025-08-13 23:20:46 瀏覽:628
泰國雲伺服器訪問人數 發布:2025-08-13 23:20:45 瀏覽:479
c語言太難 發布:2025-08-13 23:15:46 瀏覽:786
源代碼編譯後為什麼會縮小 發布:2025-08-13 23:14:46 瀏覽:394
存儲過程登錄 發布:2025-08-13 23:03:12 瀏覽:497
刀工解壓 發布:2025-08-13 22:45:20 瀏覽:516
阿里雲伺服器怎麼停用了 發布:2025-08-13 22:40:35 瀏覽:201
編譯mysql導致卡住 發布:2025-08-13 22:35:22 瀏覽:353