DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

ConcurrentLinkedQueue vs LinkedBlockingQueue


根据LinkedBlockingQueue实现的接口BlockingQueue的文档,BlockingQueue及其所有实现类都是线程安全的,且可用于多个Producer/Consumer的场景,它的主要用途是Producer-Consumer模型,它提供了4种出/入队列的方法,分别是抛异常、特殊值、阻塞和超时。

LinkedBlockingQueue初始化时可以设置容量,所以BlockingQueue具备一种“流量平衡”能力,即当消费过快以至于队列空时,出队列(消费)操作将阻塞;生产过快以至于队列满时,入队列(生产)操作将阻塞。

BlockingQueue的take()方法在阻塞状态下是不消耗CPU的。

ConcurrentLinkedQueue是一个"wait-free" algorithm(见文档),它的使用场景目前还不清楚。

参考:

http://stackoverflow.com/questions/1426754/linkedblockingqueue-vs-concurrentlinkedqueue

http://stackoverflow.com/questions/1426342/need-a-queue-that-can-support-multiple-readers/1426375#1426375



Published

Feb 4, 2013

Last Updated

Feb 4, 2013

Category

Tech

Tags

  • 并发 3
  • 队列 3
  • Java 106
  • 阻塞 2

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor