lock提供了和synchronized類似的同步功能,只是在使用時需要顯示地獲取和釋放鎖,雖然lock缺少了synchronized隱士獲取釋放鎖的便捷性,但是卻擁有了鎖獲取與釋放的可操作性,可中斷的獲取鎖以及超時獲取鎖等多種synchronized所不具備的特性。
雖然synchronized能夠隱式獲取釋放鎖,可以減少程式設計師的操作,但是這種情況下,有可能大量執行緒都在阻塞地等待乙個方法的物件鎖,如果是一些大型任務,那麼synchronized會嚴重影響系統的效能。
1) 嘗試非阻塞地獲取鎖,當前執行緒嘗試獲取鎖,如果這一時刻沒有其他執行緒獲取到,則成功獲取鎖。沒有獲取到則返回false
2) 獲取到的鎖能夠響應中斷,當獲取鎖的執行緒被中斷,中斷異常丟擲將會被丟擲,同時鎖就會被釋放。
3) 在指定的事件內,如果截止時間之前無法獲取鎖,則會返回。
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...