欧美日韩国产一区二区|qovd片|小明个人发布看看|小浪货你夹真紧水又多|老头把我添高潮了A片故|99热久久精品国产一区二区|久久久春色AV

阿里巴巴|阿里技術(shù)三面:哲學(xué)家進(jìn)餐( 三 )


第 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)推薦