synchronized的缺點
lock的缺點
lock的優點
1,lock是可以響應中斷的
2,lock介面鎖可以通過多種方法來嘗試獲取鎖包括立即返回是否成功的trylock(),以及一直嘗試獲取的lock()方法和嘗試等待指定時間長度獲取的方法,相對靈活了許多比synchronized例:a,b兩個執行緒都需要獲得物件obj的鎖定,假設a獲得了obj的鎖定,b等待a釋放鎖定
如果使用synchronized,a不釋放,b將一直等待
如果使用reentrantlock,a不釋放,b可以在等待一段時間後,中斷等待,去做別的事情
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...