高併發(13) 顯式鎖與內建鎖

2021-10-04 19:00:58 字數 432 閱讀 4610

上篇文章講解了什原子的操作類,今天就講講併發中的顯式鎖與內建鎖。

多執行緒中,jdk提供了內建鎖(synchronized)和顯式鎖(reentrantlock)兩種鎖。

synchronized若是其他執行緒持有鎖,新的執行緒獲取鎖就會被掛起,等待鎖的釋放,這個過程是無法中斷的

顯式鎖則提供了可以中斷這個申請

先是鎖提供能嘗試獲取鎖的方法,如果未獲取到,則會返回false, 否則返回true.

內建鎖則沒有提供這個功能,只要使用鎖,沒有獲取之前就不會中斷執行緒。

synchronized是只要**執行到同步**快之外,就會釋放鎖。

顯示鎖則必須呼叫釋放鎖的方法才可以釋放,需要自己處理,通常在finally中釋放鎖

內建鎖採用了不公平鎖機制。

顯示鎖可以執行是否使用公平鎖。

隱式鎖與顯式鎖詳細對比

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

顯式鎖與隱式鎖的區別

解決的方法 格式描述 同步 塊 關鍵字 synchronized 鎖物件 隱式鎖,多個執行緒的鎖物件必須唯一 同步方法 修飾符 synchronized 返回型別 方法名 隱式鎖,誰呼叫該方法誰就是鎖物件 顯示鎖reentrantlock類的lock unlock 方法 顯式鎖,有程式設計師決定在那...

高併發和鎖

面試被問到了這個問題,找了答案,記錄一下 假如有100w個使用者,搶一張票,除了負載均衡的辦法,怎麼支援高併發?修改字段 將庫存欄位number欄位設為unsigned,當庫存為0時,因為字段不能為負數,將會返回false 利用悲觀鎖 不適合高併發 悲觀鎖,也就是在修改資料的時候,採用鎖定狀態,排斥...