java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)

java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)

ID:30777709

大小:392.64 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2019-01-03

java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)_第1頁(yè)
java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)_第2頁(yè)
java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)_第3頁(yè)
java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)_第4頁(yè)
java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)_第5頁(yè)
資源描述:

《java并發(fā)編程(21):并發(fā)新特性—阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)

1、hva并發(fā)編程(21):并發(fā)新特性一阻塞隊(duì)列和阻塞棧(含代碼)-編程開(kāi)發(fā)技術(shù)Java并發(fā)編程(21):并發(fā)新特性一阻塞隊(duì)列和阻塞棧(含代碼)原文出處:蘭亭風(fēng)雨阻塞隊(duì)列阻塞隊(duì)列是Java5并發(fā)新特性中的內(nèi)容,阻塞隊(duì)列的接口是java.util,concurrent.BlockingQueue,它有多個(gè)實(shí)現(xiàn)類:ArrayBlockingQueue>DclayQucuc、LinkcdBlockingQucuc、PriorityBlockingQucuc、SynchronousQucuc等,用法大同小異,具體可查看JDK文檔,這里簡(jiǎn)

2、單舉例看下ArrayBlockingQueue,它實(shí)現(xiàn)了一個(gè)有界隊(duì)列,當(dāng)隊(duì)列滿時(shí),便會(huì)阻塞等待,直到有元素出隊(duì),后續(xù)的元素才可以被加入隊(duì)列。看下面的例子:importjeivEi.util,concurrent.BlockingQucuc;importjava.util.concurrent.ArrayBlockingQueue;publicclassBlockingQueueTest{publicstaticvoidmain(String[]args)throwsIntcrruptcdExccption{BlockingQ

3、ueuebqueue=newArrayBlockingQueue(20);for(inti=0;i〈30;i++){//將指定元索添加割此隊(duì)列中bqueue.put(z,加入元素〃+i);System,out.println(,z向阻塞隊(duì)列中添加了元素:〃+i);}System,out.println(,z程序到此運(yùn)行結(jié)束,即將退出〃);}輸出結(jié)果如下:ts0123456789601234567891111111111T::::::::::::::::::::心元元元元元元元元元元元元元元元元

4、元一兀元元⑷了了了了了了了了了了了了了了了了了了了了nnnnnnnnnnnnnnnnnnnu-DDi力力力力力力力力力力力力力力力力力力力力lomds占占占占占占占占占口口口口口口口口口B規(guī)洌例例例例例例例例例例例例例例例因列列Uja塞塞塞塞塞塞塞塞塞塞塞塞塞塞塞塞塞塞?塞塞JFFVFFVFFVFFVFFVFFVFT-±FT-±FT-±FT-±FT-±FT-±FT-±FT-±FT-±FT-±FTUFTUs>nrinrimlminrinrinrinrinrinrinrinrinrinrinrinrinrinrlnrinrl、r

5、lMiK;以Mi一円MiK;以MiK;以F以MiK;以MiK;以Mi_F以Mi一円MiK;以MiK;以MiK;以MiK;以MiK;以Mi_F以MiK;以MiK;以Mikn以Jkf;以J一F:句句句句句句句句句句句句句句句句句句句旬.UnF:>jauacBlockingQueueTest-jaua從執(zhí)行結(jié)果屮可以看出,由于隊(duì)列屮元索的數(shù)量限制在了20個(gè),因此添加20個(gè)元素后,其他元素便在隊(duì)列外阻塞等待,程序并沒(méi)有終止。如果隊(duì)列已滿后,我們將隊(duì)首元素移出,并可以繼續(xù)向阻塞隊(duì)列屮添加元素,修改代碼如下:importjava.ut

6、il,concurrent.BlockingQucuc;importjava.util.concurrent.ArrayBlockingQueue;publicclassBlockingQueueTest{publicstaticvoidmain(String[]args)tbrowsIntcrruptcdExccption{BlockingQueuebqueue=newArrayBlockingQueue(20);for(inti二0;i<30;i++){//將指定元索添加到此隊(duì)列中bque

7、ue.put(,,z,+i);System,out.printlnC向阻塞隊(duì)列中添加了元素:〃if(i>18){//從隊(duì)列中獲取隊(duì)頭元素,并將其移出隊(duì)列System,out.printin(,z從阻塞隊(duì)列中移除元素:〃+}}System,out.println(,z程序到此運(yùn)行結(jié)束,}}bqueue.take());即將退出一--〃);執(zhí)行結(jié)果如下:從結(jié)果中可以看出,當(dāng)添加了第20個(gè)元素后,我們從隊(duì)首移出一個(gè)元素,這樣便可以繼續(xù)向隊(duì)列中添加元索,之后每添加一個(gè)元素,便從將隊(duì)首元素移除,這樣程序便可以執(zhí)行結(jié)束。阻塞棧阻塞棧與阻

8、塞隊(duì)列相似,只是它是Java6中加入的新特性,阻塞棧的接口java.util,concurrent.BlockingDeque也冇很多實(shí)現(xiàn)類,使用方法也比較相似,具體查看JDK文檔。下面同樣給岀一個(gè)簡(jiǎn)單的例子:importjava.util,concurrent.BlockingDeque

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。