第 2 種情況即先后進(jìn)入臨界區(qū)的 2 位哲學(xué)家的左右叉子存在競(jìng)爭(zhēng)情況(說(shuō)明這 2 位哲學(xué)家的編號(hào)相鄰) , 因此后進(jìn)入臨界區(qū)的哲學(xué)家還需要等待 1 只叉子 , 才能就餐 。 此時(shí)可視為只有 1 個(gè)哲學(xué)家在就餐 。
至于“只允許 1 個(gè)哲學(xué)家就餐”的代碼 , 很好理解 , 每次嚴(yán)格地只讓 1 個(gè)哲學(xué)家就餐 , 由于過(guò)于嚴(yán)格 , 以至于都不需要將叉子視為ReentrantLock 。
方法三前面說(shuō)過(guò) , 該題的本質(zhì)是考察如何避免死鎖 。
而當(dāng) 5 個(gè)哲學(xué)家都左手持有其左邊的叉子或當(dāng) 5 個(gè)哲學(xué)家都右手持有其右邊的叉子時(shí) , 會(huì)發(fā)生死鎖 。
故只需設(shè)計(jì)1個(gè)避免發(fā)生上述情況發(fā)生的策略即可 。
即可以讓一部分哲學(xué)家優(yōu)先去獲取其左邊的叉子 , 再去獲取其右邊的叉子;再讓剩余哲學(xué)家優(yōu)先去獲取其右邊的叉子 , 再去獲取其左邊的叉子 。
代碼如下:
改進(jìn):
位運(yùn)算就可以表示5個(gè)叉子的使用狀態(tài) , 只需用1個(gè)volatile修飾的int變量即可 + CAS操作即可 , 即AtomicInteger類 。
寫在最后本文內(nèi)容出處是力扣官網(wǎng) , 希望和大家一起刷算法 , 在后面的路上不變禿但是變強(qiáng)!
好兄弟可以點(diǎn)贊并關(guān)注我 , 全部都是干貨 。
相關(guān)經(jīng)驗(yàn)推薦
- |灣測(cè)技術(shù):自研工控傳感器芯片行業(yè)發(fā)展趨勢(shì)
- 風(fēng)扇|西班牙制冷風(fēng)扇進(jìn)入中國(guó)!半導(dǎo)體核心技術(shù),價(jià)格卻只有空調(diào)的1/3
- 空調(diào)扇|空調(diào)扇界的“華為”,采用半導(dǎo)體強(qiáng)制冷技術(shù),凈化空氣久吹不濕寒
- 華碩|大廠也內(nèi)卷?不只是造手機(jī),還要發(fā)展技術(shù)!
- 堅(jiān)果手機(jī)|毫米波雷達(dá)技術(shù)方案,愛(ài)希ISEE人體感應(yīng)器,雷達(dá)傳感器探測(cè)應(yīng)用
- |柔性電子產(chǎn)品的激光傳輸、打印和組裝技術(shù)(2)
- 阿里巴巴|一加新款中端機(jī)本月發(fā)布 LCD屏加天璣8100或歸屬Ace系列
- 量子技術(shù)|新一輪科技戰(zhàn)要打響了,在量子技術(shù)領(lǐng)域,未來(lái)誰(shuí)能稱王?
- |電池修復(fù)技術(shù)-鋰電保護(hù)過(guò)充與過(guò)放
- 顯卡|都2022年了,iPhone還是令人捉急的充電技術(shù)怎么解?答:上外掛
