java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术

java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术

ID:30777709

大小:392.64 KB

页数:8页

时间:2019-01-03

java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术_第1页
java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术_第2页
java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术_第3页
java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术_第4页
java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术_第5页
资源描述:

《java并发编程(21):并发新特性—阻塞队列和阻塞栈(含代码)-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、hva并发编程(21):并发新特性一阻塞队列和阻塞栈(含代码)-编程开发技术Java并发编程(21):并发新特性一阻塞队列和阻塞栈(含代码)原文出处:兰亭风雨阻塞队列阻塞队列是Java5并发新特性中的内容,阻塞队列的接口是java.util,concurrent.BlockingQueue,它有多个实现类:ArrayBlockingQueue>DclayQucuc、LinkcdBlockingQucuc、PriorityBlockingQucuc、SynchronousQucuc等,用法大同小异,具体可查看JDK文档,这里简

2、单举例看下ArrayBlockingQueue,它实现了一个有界队列,当队列满时,便会阻塞等待,直到有元素出队,后续的元素才可以被加入队列。看下面的例子:importjeivEi.util,concurrent.BlockingQucuc;importjava.util.concurrent.ArrayBlockingQueue;publicclassBlockingQueueTest{publicstaticvoidmain(String[]args)throwsIntcrruptcdExccption{BlockingQ

3、ueuebqueue=newArrayBlockingQueue(20);for(inti=0;i〈30;i++){//将指定元索添加割此队列中bqueue.put(z,加入元素〃+i);System,out.println(,z向阻塞队列中添加了元素:〃+i);}System,out.println(,z程序到此运行结束,即将退出〃);}输出结果如下:ts0123456789601234567891111111111T::::::::::::::::::::心元元元元元元元元元元元元元元元元

4、元一兀元元⑷了了了了了了了了了了了了了了了了了了了了nnnnnnnnnnnnnnnnnnnu-DDi力力力力力力力力力力力力力力力力力力力力lomds占占占占占占占占占口口口口口口口口口B规洌例例例例例例例例例例例例例例例因列列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从执行结果屮可以看出,由于队列屮元索的数量限制在了20个,因此添加20个元素后,其他元素便在队列外阻塞等待,程序并没有终止。如果队列已满后,我们将队首元素移出,并可以继续向阻塞队列屮添加元素,修改代码如下:importjava.ut

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

7、ue.put(,,z,+i);System,out.printlnC向阻塞队列中添加了元素:〃if(i>18){//从队列中获取队头元素,并将其移出队列System,out.printin(,z从阻塞队列中移除元素:〃+}}System,out.println(,z程序到此运行结束,}}bqueue.take());即将退出一--〃);执行结果如下:从结果中可以看出,当添加了第20个元素后,我们从队首移出一个元素,这样便可以继续向队列中添加元索,之后每添加一个元素,便从将队首元素移除,这样程序便可以执行结束。阻塞栈阻塞栈与阻

8、塞队列相似,只是它是Java6中加入的新特性,阻塞栈的接口java.util,concurrent.BlockingDeque也冇很多实现类,使用方法也比较相似,具体查看JDK文档。下面同样给岀一个简单的例子:importjava.util,concurrent.BlockingDeque

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。