Java 阻塞队列 BlockingQueue

来源:互联网 发布:淘宝微淘如何发买家秀 编辑:程序博客网 时间:2024/04/30 16:45

阻塞队列:只是队列的拓展,传统队列当满的时候会抛出异常,而阻塞队列会一直等待,不会报错,当然,里面包含的方法如下:


 抛出异常特殊值阻塞超时插入add(e)offer(e)put(e)offer(e, time, unit)移除remove()poll()take()poll(time, unit)检查element()peek()不可用不可用


我们发现添加方法有四种,我们这里分别演示一下效果,

add(e)

public class QueueDemo {public static void main(String[] args) throws InterruptedException {ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(20);for (int i = 0; i < 30; i++) {queue.add(i);// queue.offer(i);// queue.put(i);System.out.println("add number is --->" + i);}System.out.println("END");}}
结果:

add number is --->0add number is --->1add number is --->2add number is --->3add number is --->4add number is --->5add number is --->6add number is --->7add number is --->8add number is --->9add number is --->10add number is --->11add number is --->12add number is --->13add number is --->14add number is --->15add number is --->16add number is --->17add number is --->18add number is --->19Exception in thread "main" java.lang.IllegalStateException: Queue fullat java.util.AbstractQueue.add(Unknown Source)at java.util.concurrent.ArrayBlockingQueue.add(Unknown Source)at com.yonyou.thread.QueueDemo.main(QueueDemo.java:9)

开辟了size为20的队列,但是添加进去30个Integer对象,则超过临界区大小,抛出异常。

queue.offer(i);

add number is --->0add number is --->1add number is --->2add number is --->3add number is --->4add number is --->5add number is --->6add number is --->7add number is --->8add number is --->9add number is --->10add number is --->11add number is --->12add number is --->13add number is --->14add number is --->15add number is --->16add number is --->17add number is --->18add number is --->19add number is --->20add number is --->21add number is --->22add number is --->23add number is --->24add number is --->25add number is --->26add number is --->27add number is --->28add number is --->29END

结果正常输出,该方法放弃大小限制,无限制容量扩展。

到达临界区 放不进去了。。。队列处于阻塞状态。。。等待有空闲空间。


queue.offer(i, 2000, TimeUnit.MILLISECONDS);

结果也不会受到size大小限制,会根据我们提前设置好的2s  依次入队 结果没有影响。


0 0
原创粉丝点击