synchronized和Lock的比較

2021-09-17 19:46:20 字數 534 閱讀 3771

synchronized的缺點

lock的缺點

lock的優點

1,lock是可以響應中斷的

例:a,b兩個執行緒都需要獲得物件obj的鎖定,假設a獲得了obj的鎖定,b等待a釋放鎖定

如果使用synchronized,a不釋放,b將一直等待

如果使用reentrantlock,a不釋放,b可以在等待一段時間後,中斷等待,去做別的事情

2,lock介面鎖可以通過多種方法來嘗試獲取鎖包括立即返回是否成功的trylock(),以及一直嘗試獲取的lock()方法和嘗試等待指定時間長度獲取的方法,相對靈活了許多比synchronized 

3,通過在讀多,寫少的高併發情況下,我們用reentrantreadwritelock分別獲取讀鎖和寫鎖來提高系統的效能,因為讀鎖是共享鎖,即可以同時有多個執行緒讀取共享資源,而寫鎖則保證了對共享資源的修改只能是單執行緒的

相同點

lockInterruptibly和lock的區別

size medium lock 拿不到lock就不罷休,不然執行緒就一直block。lockinterruptibly會優先響應執行緒中斷,處理響應的方式是丟擲interruptedexception。size 可以從原始碼看出來的 private void doacquireinterrupti...

synchronized和volatile的區別?

一旦乙個共享變數 類的成員變數 類的靜態成員變數 被volatile修飾之後,那麼就具備了兩層語義 1 保證了不同執行緒對這個變數進行操作時的可見性,即乙個執行緒修改了某個變數的值,這新值對其他執行緒來說是 立即可見的。2 禁止進行指令重排序。volatile本質是在告訴jvm當前變數在暫存器 工作...

synchronized和volatile的區別

volatile關鍵字的本質是告訴jvm,該變數在暫存器中的值是不確定的,需要在主存中讀取,而synchronized關鍵字是鎖住當前變數,只有當前執行緒可以訪問,其他執行緒等待。volatile關鍵字的作用 保證變數的可見性和防止指令重排序。1.volatile只能作用於變數,而synchroni...