synchronized和Lock的區別

2021-10-13 07:00:18 字數 382 閱讀 4581

synchronized和lock的區別有哪些?

synchronized是乙個關鍵字,而lock是乙個類;

synchronized無法獲取鎖的狀態,而lock可以去判斷是否獲取到了鎖;

synchronized執行完後會自動釋放鎖,而lock需要手動去釋放,如果沒有釋放鎖,就會造成死鎖的現象!

synchronized:執行緒a獲取到了鎖,這時候執行緒b只能慢慢等待;lock:不一定會一直等待(lock.trylock();)。

synchronized:可重入鎖,非公平,不可中斷;lock:可重入鎖,可以設定公平和非公平,可判斷;

synchronized適合鎖少量的同步**,lock適合鎖大量的同步**;

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...