摘要:釋放鎖,每次鎖持有者數量遞減,直到為止。返回一個這個鎖的實例,可以實現關鍵字類似實現多線程通信的功能,不過這個比要更靈活,更強大
這幾個方法都是 Lock 接口中定義的:
1)lock()
獲取鎖,有以下三種情況:
鎖空閑:直接獲取鎖并返回,同時設置鎖持有者數量為:1;
當前線程持有鎖:直接獲取鎖并返回,同時鎖持有者數量遞增1;
其他線程持有鎖:當前線程會休眠等待,直至獲取鎖為止;
2)lockInterruptibly()
獲取鎖,邏輯和 lock() 方法一樣,但這個方法在獲取鎖過程中能響應中斷。
3)tryLock()
從關鍵字字面理解,這是在嘗試獲取鎖,獲取成功返回:true,獲取失敗返回:false, 這個方法不會等待,有以下三種情況:
鎖空閑:直接獲取鎖并返回:true,同時設置鎖持有者數量為:1;
當前線程持有鎖:直接獲取鎖并返回:true,同時鎖持有者數量遞增1;
其他線程持有鎖:獲取鎖失敗,返回:false;
4)tryLock(long timeout, TimeUnit unit)
邏輯和 tryLock() 差不多,只是這個方法是帶時間的。
5)unlock()
釋放鎖,每次鎖持有者數量遞減 1,直到 0 為止。所以,現在知道為什么 lock 多少次,就要對應 unlock 多少次了吧。
6)newCondition
返回一個這個鎖的 Condition 實例,可以實現 synchronized 關鍵字類似 wait/ notify 實現多線程通信的功能,不過這個比 wait/ notify 要更靈活,更強大!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75127.html
摘要:為什么叫重入鎖呢,我們把它拆開來看就明了了。釋放鎖,每次鎖持有者數量遞減,直到為止。 相信大家在工作或者面試過程中經常聽到重入鎖這個概念,或者與關鍵字 synchrozied 的對比,棧長面試了這么多人,80%的面試者都沒有答對或沒有答到點上,或者把雙重效驗鎖搞混了,哭笑不得。。 那么你對重入鎖了解有多少呢?今天,棧長幫大家撕開重入鎖的面紗,來見識下重入鎖的真實容顏。。 什么是重入鎖 ...
摘要:作者畢來生微信鎖狀態轉換分類以后幫助我們提供了線程同步機制,通過顯示定義同步鎖來實現對象之間的同步。等待重新嘗試因為在中是用關鍵字聲明的,故可以在線程間可見再次判斷一下能否持有鎖可能線程同步代碼執行得比較快,已經釋放了鎖,不可以就返回。 作者 : 畢來生微信: 878799579 鎖狀態轉換 showImg(https://segmentfault.com/img/remote/...
摘要:所以就有了讀寫鎖。只要沒有,讀取鎖可以由多個線程同時保持。其讀寫鎖為兩個內部類都實現了接口。讀寫鎖同樣依賴自定義同步器來實現同步狀態的,而讀寫狀態就是其自定義同步器的狀態。判斷申請寫鎖數量是否超標超標則直接異常,反之則設置共享狀態。 一、寫在前面 在上篇我們聊到了可重入鎖(排它鎖)ReentrantLcok ,具體參見《J.U.C|可重入鎖ReentrantLock》 Reentra...
摘要:所以就有了讀寫鎖。只要沒有,讀取鎖可以由多個線程同時保持。其讀寫鎖為兩個內部類都實現了接口。讀寫鎖同樣依賴自定義同步器來實現同步狀態的,而讀寫狀態就是其自定義同步器的狀態。判斷申請寫鎖數量是否超標超標則直接異常,反之則設置共享狀態。 一、寫在前面 在上篇我們聊到了可重入鎖(排它鎖)ReentrantLcok ,具體參見《J.U.C|可重入鎖ReentrantLock》 Reentra...
摘要:二什么是重入鎖可重入鎖,顧名思義,支持重新進入的鎖,其表示該鎖能支持一個線程對資源的重復加鎖。將由最近成功獲得鎖,并且還沒有釋放該鎖的線程所擁有。可以使用和方法來檢查此情況是否發生。 一、寫在前面 前幾篇我們具體的聊了AQS原理以及底層源碼的實現,具體參見 《J.U.C|一文搞懂AQS》《J.U.C|同步隊列(CLH)》《J.U.C|AQS獨占式源碼分析》《J.U.C|AQS共享式源...
閱讀 2959·2023-04-25 17:46
閱讀 3588·2021-11-25 09:43
閱讀 1092·2021-11-18 10:02
閱讀 3051·2021-10-14 09:43
閱讀 2768·2021-10-13 09:40
閱讀 1524·2021-09-28 09:35
閱讀 2184·2019-08-30 15:52
閱讀 3154·2019-08-30 14:06