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