本篇內(nèi)容介紹了“AbstractQueuedSynchronizer是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)專(zhuān)注于桑珠孜網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供桑珠孜營(yíng)銷(xiāo)型網(wǎng)站建設(shè),桑珠孜網(wǎng)站制作、桑珠孜網(wǎng)頁(yè)設(shè)計(jì)、桑珠孜網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)服務(wù),打造桑珠孜網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供桑珠孜網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
AbstractQueuedSynchronizer抽象類(lèi)
子類(lèi)中獨(dú)自實(shí)現(xiàn)以下方法
*
state狀態(tài)修改使用以下方法
{@link #getState}, {@link * #setState} {@link #compareAndSetState}:
Node{
// 表示節(jié)點(diǎn)狀態(tài),CANCELLED,值為1 ,表示當(dāng)前線(xiàn)程被取消 SIGNAL 值為-1,
//表示當(dāng)前節(jié)點(diǎn)的后繼節(jié)點(diǎn)包含的線(xiàn)程需要運(yùn)行,也就是unpark
// condition 值為-2 ,表示當(dāng)前節(jié)點(diǎn)在等condition,也就是condition隊(duì)列中
// propagate,值為-3 ,表示當(dāng)前場(chǎng)景下后續(xù)的acquireShared能夠得以執(zhí)行;
//值為0,表示當(dāng)前節(jié)點(diǎn)在sync隊(duì)列中,等待著獲取鎖
int waitStatus;
// 前驅(qū)節(jié)點(diǎn),如取消當(dāng)前節(jié)點(diǎn),就需要完成連接
Node prev;
//后繼節(jié)點(diǎn)
Node next;
//存儲(chǔ)condition隊(duì)列中的后繼節(jié)點(diǎn)
Node nextWaiter;
//入隊(duì)列當(dāng)前線(xiàn)程
Thread thread;
}
//獲取一個(gè)排他鎖
while(獲取鎖){
if(獲取到){
退出while循環(huán)
} else {
if(當(dāng)前線(xiàn)程沒(méi)有入隊(duì)列){
那么入隊(duì)列
}
阻塞當(dāng)前線(xiàn)程
}
}
}
}
// 釋放一個(gè)排他鎖
if(釋放成功){
刪除頭節(jié)點(diǎn)
激活原頭結(jié)點(diǎn)的后繼節(jié)點(diǎn)
}
“AbstractQueuedSynchronizer是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!