顯式鎖與隱式鎖的區別

2021-10-24 22:34:13 字數 726 閱讀 3044

解決的方法

格式描述

同步**塊(關鍵字)

synchronized(鎖物件){}

隱式鎖,多個執行緒的鎖物件必須唯一

同步方法(修飾符)

synchronized 返回型別 方法名(){}

隱式鎖,誰呼叫該方法誰就是鎖物件

顯示鎖reentrantlock類的lock()/unlock()方法

顯式鎖,有程式設計師決定在那開啟/關閉鎖

sync 和 lock 的出身(原始的構成)不同:

sync是隱式鎖;lock是顯示鎖。

所謂的顯示和隱式就是在使用的時候,使用者要不要手動寫**去獲取鎖和釋放鎖。

sync是不可中斷的。除非丟擲異常或者正常執行完成。

lock是可以中斷的。中斷方式:

呼叫設定超時方法trylock(long timeout ,timeunit unit)呼叫lockinterruptibly()放到**塊中,然後呼叫interrupt()方法可以中斷

sync:非公平鎖。

lock:兩者都可以。預設是非公平鎖,在其構造方法的時候可以傳入boolean值(true:公平鎖;false:非公平鎖)

sync:沒有。要麼隨機喚醒乙個執行緒;要麼是喚醒所有等待的執行緒。

lock:用來實現分組喚醒需要喚醒的執行緒,可以精確的喚醒,而不是像sync那樣,不能精確喚醒執行緒。

隱式鎖與顯式鎖詳細對比

synchronized修飾的物件,該物件就是隱式鎖,例子如下 public static void main string args static class ticket implements runnable catch interruptedexception e count system....

mysql隱式鎖 innodB的隱式鎖

一 知識準備之隱式鎖 innodb 實現了乙個延遲加鎖的機制,來減少加鎖的數量,在 中稱為隱式鎖 implicit lock 隱式鎖中有個重要的元素,事務id trx id 隱式鎖的邏輯過程如下 a.innodb的每條記錄中都乙個隱含的trx id欄位,這個字段存在於簇索引的b tree中。b.在操...

顯式Intent與隱式Intent的區別

在activity的跳轉中 activity的跳轉需要建立intent物件,通過設定intent物件的引數指定要跳轉activity 通過設定activity的包名和類名實現跳轉,稱為顯式意圖 通過指定動作實現跳轉,稱為隱式意圖 顯式意圖 跳轉至同一專案下的另乙個activity,直接指定該acti...