syschronized和lock的區別2

2021-10-09 21:23:25 字數 619 閱讀 3278

synchronized可以保證可見性、原子性。

記憶體可見性:

乙個執行緒在釋放syschronized鎖之前,會將執行緒記憶體中的共享變數寫回到主記憶體

乙個執行緒在獲取syschronized鎖之後,會清空執行緒內部涉及到的共享變數,再從主記憶體讀取

synchronized是可重入鎖,為什麼要有可重入鎖,可重入鎖的作用:

syschronized對同乙個執行緒是可重入的,可重入的好處就是不會出現自己把自己鎖死的情況,所以可重入鎖的意義在於防止死鎖

synchronized的鎖可重入、不可中斷、非公平,而lock鎖可重入、可中斷、可公平、繫結多個condition.(兩者皆可重入)

synchronized是乙個關鍵字 lock是乙個介面是類

synchronized無法獲得所得狀態,屬於自動鎖,發生異常會自動釋放鎖

lock可以獲得鎖的狀態,手動鎖,發生異常不會自動釋放要在finally裡面自己手動釋放

synchronized是非公平鎖 lock是公平鎖

synchronized不可中斷 持有鎖線程一直不釋放,其他只能阻塞等待 lock可以設定時間進行放棄等待

syschronized和lock的區別

1 synchronized是乙個關鍵字 lock是乙個介面是類 2 synchronized是隱式的,不需要手動上鎖和解鎖,屬於自動鎖,發生異常會自動釋放鎖 lock是顯式的,需要手動獲取鎖和釋放鎖,手動鎖,發生異常不會自動釋放要在finally裡面自己手動釋放 3 synchronized是非公...

lockInterruptibly和lock的區別

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

Linq To Sql高階系列(三)CUD和Log

cud就是create,update,delete。在別人都寫過了後,還有什麼是新鮮的呢?1,createdatabase northwind db new northwind you connection string 注意database項,起乙個 不存在的資料庫名稱 db.log consol...