syschronized和lock的區別

2021-10-04 07:46:23 字數 321 閱讀 5449

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

2、synchronized是隱式的,不需要手動上鎖和解鎖,屬於自動鎖,發生異常會自動釋放鎖

lock是顯式的,需要手動獲取鎖和釋放鎖,手動鎖,發生異常不會自動釋放要在finally裡面自己手動釋放

3、synchronized是非公平鎖 lock可以是公平鎖【reentrantlock預設是非公平鎖構造方法預設是false(效率高),傳入true是公平鎖(效率低)】

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

syschronized和lock的區別2

synchronized可以保證可見性 原子性。記憶體可見性 乙個執行緒在釋放syschronized鎖之前,會將執行緒記憶體中的共享變數寫回到主記憶體 乙個執行緒在獲取syschronized鎖之後,會清空執行緒內部涉及到的共享變數,再從主記憶體讀取 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...