Java线程安全队列BlockingQueue
2017-05-27 10:53
246 查看
线程安全队列BlockingQueue
用法跟普通队列没有区别,只是加入了多线程支持。
这里主要说说add和put,以及poll和take的区别:
add和put都是用来忘队列里面塞东西的,而poll和take都是用来取队列的头元素的。
下面看下声明:
add: boolean java.util.concurrent.BlockingQueue.add(Object e);
put: void java.util.concurrent.BlockingQueue.put(Object e) throws InterruptedException;
poll: Object java.util.Queue.poll();
take: Object java.util.concurrent.BlockingQueue.take() throws InterruptedException;
经过实际测试,结果如下:
总结:add和poll是非阻塞的,put和take是阻塞的。
add会返回插入队列的结果,成功返回true,失败返回false, put不会返回结果,因为BlockingQueue的长度是在创建这个队列的时候就设定好了的,当队列已经满了的时候,
add会跑出异常,而put则会阻塞直到插入成功。
poll和take的区别类似, 当队列为空时,take会阻塞至取到元素为止,而poll会返回null值。
用法跟普通队列没有区别,只是加入了多线程支持。
这里主要说说add和put,以及poll和take的区别:
add和put都是用来忘队列里面塞东西的,而poll和take都是用来取队列的头元素的。
下面看下声明:
add: boolean java.util.concurrent.BlockingQueue.add(Object e);
put: void java.util.concurrent.BlockingQueue.put(Object e) throws InterruptedException;
poll: Object java.util.Queue.poll();
take: Object java.util.concurrent.BlockingQueue.take() throws InterruptedException;
经过实际测试,结果如下:
总结:add和poll是非阻塞的,put和take是阻塞的。
add会返回插入队列的结果,成功返回true,失败返回false, put不会返回结果,因为BlockingQueue的长度是在创建这个队列的时候就设定好了的,当队列已经满了的时候,
add会跑出异常,而put则会阻塞直到插入成功。
poll和take的区别类似, 当队列为空时,take会阻塞至取到元素为止,而poll会返回null值。
相关文章推荐
- Java线程(十三):BlockingQueue-线程的阻塞队列
- Java多线程总结之线程安全队列Queue
- 转载 java中线程队列BlockingQueue的用法
- Java线程外篇:阻塞队列BlockingQueue
- java中线程队列BlockingQueue的用法
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- java中线程队列BlockingQueue的用法
- Java线程:阻塞队列BlockingQueue
- java中线程队列BlockingQueue的用法
- Java线程(篇外篇):阻塞队列BlockingQueue
- Java多线程总结之线程安全队列Queue
- (13)多线程与并发库之java5阻塞队列(BlockingQueue)的应用----子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java线程(十三):BlockingQueue-线程的阻塞队列
- 利用JAVA线程安全队列简单实现读者写者问题。
- Java -- 使用阻塞队列(BlockingQueue)控制线程通信
- Java多线程总结之线程安全队列Queue