根据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