Java并发之阻塞队列(三)
2017-01-02 19:10
302 查看
SynchronousQueue是阻塞队列的一种,每一次insert操作必须等在另外一个线程的remove操作,同步队列没有任何容器,甚至一个队列容器都没有.同步队列类似于
CSP 和 Ada 中使用的 rendezvous 信道。它非常适合于传递性设计,在这种设计中,在一个线程中运行的对象要将某些信息、事件或任务传递给在另一个线程中运行的对象,它就必须与该对象同步。对于正在等待的生产者和使用者线程而言,此类支持可选的公平排序策略。默认情况下不保证这种排序。但是,使用公平设置为 true 所构造的队列可保证线程以 FIFO 的顺序进行访问。
公平和非公平的方式:公平采用队列链表的方式,非公平采用链栈的方式.
![](https://img-blog.csdn.net/20170102190253660?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenhkZmM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在网上有比较不错的博文,这里不再重复.
原理篇:http://blog.csdn.net/yanyan19880509/article/details/52562039
源码篇:http://www.cnblogs.com/leesf456/p/5560362.html
http://vickyqi.com/2015/11/30/JDK%E5%B9%B6%E5%8F%91%E5%B7%A5%E5%85%B7%E7%B1%BB%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94SynchronousQueue/
CSP 和 Ada 中使用的 rendezvous 信道。它非常适合于传递性设计,在这种设计中,在一个线程中运行的对象要将某些信息、事件或任务传递给在另一个线程中运行的对象,它就必须与该对象同步。对于正在等待的生产者和使用者线程而言,此类支持可选的公平排序策略。默认情况下不保证这种排序。但是,使用公平设置为 true 所构造的队列可保证线程以 FIFO 的顺序进行访问。
公平和非公平的方式:公平采用队列链表的方式,非公平采用链栈的方式.
在网上有比较不错的博文,这里不再重复.
原理篇:http://blog.csdn.net/yanyan19880509/article/details/52562039
源码篇:http://www.cnblogs.com/leesf456/p/5560362.html
http://vickyqi.com/2015/11/30/JDK%E5%B9%B6%E5%8F%91%E5%B7%A5%E5%85%B7%E7%B1%BB%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94SynchronousQueue/
相关文章推荐
- 线程高级应用-心得7-java5线程并发库中阻塞队列Condition的应用及案例分析
- 【Java并发编程】之二十一:并发新特性—阻塞队列和阻塞栈(含代码)
- CoreJava_线程并发(阻塞队列):在某个文件夹下搜索含有某关键字的文件
- Java并发框架——AQS阻塞队列管理(二)——自旋锁优化
- 聊聊高并发(十四)理解Java中的管程,条件队列,Condition以及实现一个阻塞队列
- Java多线程 阻塞队列和并发集合
- Java多线程 阻塞队列和并发集合
- Java并发编程:阻塞队列
- Java多线程 阻塞队列和并发集合
- Java并发框架——AQS阻塞队列管理(二)——自旋锁优化
- Java多线程 阻塞队列和并发集合
- zz 聊聊并发(七)——Java中的阻塞队列
- Java多线程 阻塞队列和并发集合
- Java并发(基础知识)—— 阻塞队列和生产者消费者模式
- (13)多线程与并发库之java5阻塞队列(BlockingQueue)的应用----子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
- 聊聊并发-Java中的阻塞队列
- Java阻塞队列SynchronousQueue实现并发
- 【Java】并发之阻塞队列
- Java并发框架——AQS阻塞队列管理(一)——自旋锁
- 黑马程序员——Java5中的线程并发库(二)--Semaphore实现信号灯、其他同步函数、可阻塞的队列、同步集合