大話隊(duì)列

隊(duì)列名稱 是否可以控制隊(duì)列容量 底層數(shù)據(jù)結(jié)構(gòu) 加鎖方式 特點(diǎn)
ArrayBlockingQueue 可以 數(shù)組 ReentrantLock 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜放到餐臺(tái),同時(shí)喚醒正在等待的服務(wù)員;
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則等待;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則取菜,并喚醒正在等待的廚師;
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則等待;
LinkedBlockingQueue 可以 單向鏈表 ReentrantLock 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜放到餐臺(tái),同時(shí)喚醒正在等待的服務(wù)員;
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則等待;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則取菜,并喚醒正在等待的廚師;
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則等待;
LinkedBlockingDeque 可以 雙向鏈表 ReentrantLock 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜放到餐臺(tái),同時(shí)喚醒正在等待的服務(wù)員;
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則等待;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則取菜,并喚醒正在等待的廚師;
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則等待;
LinkedTransferQueue 不可以 單向鏈表 ReentrantLock 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜放到餐臺(tái),同時(shí)喚醒正在等待的服務(wù)員;
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則等待;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則取菜,并喚醒正在等待的廚師;
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則等待;
5、廚師炒好菜,發(fā)現(xiàn)有服務(wù)員在等待,則直接把菜給服務(wù)員;
PriorityBlockingQueue 不可以 ReentrantLock 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜按照一定順序放到餐臺(tái),同時(shí)喚醒正在等待的服務(wù)員;
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則等待;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則取菜,并喚醒正在等待的廚師;
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則等待;
DelayQueue 不可以 ReentrantLock 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜按照一定順序放到餐臺(tái),同時(shí)喚醒正在等待的服務(wù)員;
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則等待;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則看下當(dāng)前菜是否到時(shí)間,到時(shí)間則取菜,并喚醒正在等待的廚師;沒(méi)到時(shí)間,自旋等待
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則等待;
ConcurrentLinkedQueue 不可以 單向鏈表 cas 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜放到餐臺(tái);
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則自旋;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則取菜;
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則自旋;
ConcurrentLinkedDeque 不可以 雙向鏈表 cas 1、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)有位置,直接把菜放到餐臺(tái);
2、廚師炒好菜,發(fā)現(xiàn)餐臺(tái)沒(méi)有位置,則自旋;
3、服務(wù)員來(lái)取菜,發(fā)現(xiàn)有菜,則取菜;
4、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)有菜,則自旋;
SynchronousQueue 容量為0 ReentrantLock 1、廚師炒好菜,發(fā)現(xiàn)沒(méi)服務(wù)員,則等待服務(wù)員;
2、服務(wù)員來(lái)取菜,發(fā)現(xiàn)沒(méi)廚師,則等待廚師;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 要學(xué)習(xí)多線程一些基本的同步類也是不得不學(xué)習(xí)的,這里主要講一點(diǎn)基本的概念與使用。 阻塞隊(duì)列 阻塞隊(duì)列提供可阻塞的pu...
    IT樂(lè)知閱讀 168評(píng)論 0 1
  • 理論部分 用數(shù)組實(shí)現(xiàn)一個(gè)順序隊(duì)列。用數(shù)組實(shí)現(xiàn)一個(gè)循環(huán)隊(duì)列。用鏈表實(shí)現(xiàn)一個(gè)鏈?zhǔn)疥?duì)列。 順序隊(duì)列代碼實(shí)現(xiàn) 循環(huán)隊(duì)列代碼...
    Jay丶x閱讀 163評(píng)論 0 0
  • 零、什么是Node.js? 引用Node.js官方網(wǎng)站的解釋如下: Node.js? is a JavaScrip...
    JokerPeng閱讀 3,115評(píng)論 0 15
  • 3.2燕 在成都進(jìn)入大一的初期,我對(duì)中學(xué)時(shí)代的紅還是念念不忘的。由于我本身的性格,熱衷于參加各種校內(nèi)外的社團(tuán)活動(dòng)和...
    公子林閱讀 879評(píng)論 4 7
  • 我收到的關(guān)于Python Asyncio最常見(jiàn)的問(wèn)題是“它是什么,我能拿它來(lái)做什么”。這個(gè)問(wèn)題最多的回答可能是 “...
    此番風(fēng)景閱讀 263評(píng)論 0 2

友情鏈接更多精彩內(nèi)容