新聞中心
CyclicBarrier是java.util.concurrent包下面的一個(gè)工具類(lèi),字面意思是可循環(huán)使用(Cyclic)的屏障(Barrier),通過(guò)它可以實(shí)現(xiàn)讓一組線程到達(dá)一個(gè)屏障(也可以叫同步點(diǎn))時(shí)被阻塞,直到最后一個(gè)線程到達(dá)屏障時(shí),所有被屏障攔截的線程才會(huì)繼續(xù)執(zhí)行。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),德江企業(yè)網(wǎng)站建設(shè),德江品牌網(wǎng)站建設(shè),網(wǎng)站定制,德江網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,德江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。這篇文章將介紹CyclicBarrier這個(gè)同步工具類(lèi)的以下幾點(diǎn)
- 通過(guò)案例分析
- 兩種不同構(gòu)造函數(shù)測(cè)試
- CyclicBarrier和CountDownLatch的區(qū)別
- await方法及源碼分析。
需求
繼上一篇CountDownLatch模擬游戲加載后,現(xiàn)在用戶(hù)點(diǎn)擊開(kāi)始按鈕后,需要匹配包括自己在內(nèi)的五個(gè)玩家才能開(kāi)始游戲,匹配玩家成功后進(jìn)入到選擇角色階段。當(dāng)5位玩家角色都選擇完畢后,開(kāi)始進(jìn)入游戲。進(jìn)入游戲時(shí)需要加載相關(guān)的數(shù)據(jù),待全部玩家都加載完畢后正式開(kāi)始游戲。
解決方案
從需求中可以知道,想要開(kāi)始游戲需要經(jīng)過(guò)三個(gè)階段,分別是
匹配玩家
選擇角色
加載數(shù)據(jù)
在這三個(gè)階段中,都需要互相等待對(duì)方完成才能繼續(xù)進(jìn)入下個(gè)階段。
這時(shí)可以采用CyclicBarrier來(lái)作為各個(gè)階段的節(jié)點(diǎn),等待其他玩家到達(dá),在進(jìn)入下個(gè)階段。
定義繼承Runnable的類(lèi)
這里名稱(chēng)就叫做StartGame,包含兩個(gè)屬性
private String player; private CyclicBarrier barrier;
分享文章:java多線程開(kāi)發(fā)之通過(guò)對(duì)戰(zhàn)游戲?qū)W習(xí)CyclicBarrier-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/ceggdi.html