創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!
深入淺析ReentrantL中實(shí)現(xiàn)ock的原理?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
1 synchronized和lock
1.1 synchronized的局限性
1.2 Lock簡(jiǎn)介
2 AQS
3 lock()與unlock()實(shí)現(xiàn)原理
3.1 基礎(chǔ)知識(shí)
3.2 內(nèi)部結(jié)構(gòu)
3.3 NonfairSync
3.3.1 lock()
3.3.2 unlock()
3.3.3 小結(jié)
3.4 FairSync
4 超時(shí)機(jī)制
5 總結(jié)
1 synchronized和lock
1.1 synchronized的局限性
synchronized是java內(nèi)置的關(guān)鍵字,它提供了一種獨(dú)占的加鎖方式。synchronized的獲取和釋放鎖由JVM實(shí)現(xiàn),用戶不需要顯示的釋放鎖,非常方便。然而synchronized也有一定的局限性,例如:
當(dāng)線程嘗試獲取鎖的時(shí)候,如果獲取不到鎖會(huì)一直阻塞。
如果獲取鎖的線程進(jìn)入休眠或者阻塞,除非當(dāng)前線程異常,否則其他線程嘗試獲取鎖必須一直等待。
JDK1.5之后發(fā)布,加入了Doug Lea實(shí)現(xiàn)的concurrent包。包內(nèi)提供了Lock類,用來(lái)提供更多擴(kuò)展的加鎖功能。Lock彌補(bǔ)了synchronized的局限,提供了更加細(xì)粒度的加鎖功能。
1.2 Lock簡(jiǎn)介
Lock api如下
void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time, TimeUnit unit) throws InterruptedException; void unlock(); Condition newCondition();
標(biāo)題名稱:深入淺析ReentrantLock的實(shí)現(xiàn)原理-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://www.chinadenli.net/article16/dishdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站導(dǎo)航、網(wǎng)站制作、企業(yè)建站、網(wǎng)站維護(hù)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容