LinkedBlockingQueue ConcurrentLinkedQueue
都是先进先出的线程同步的队列
区别:
The most important difference between LinkedBlockingQueue and ConcurrentLinkedQueue is that if you request an element from a LinkedBlockingQueue and the queue is empty, your thread will wait until there is something there. A ConcurrentLinkedQueue will return right away with the behavior of an empty queue.
队列为空时执行_segments.take()
LinkedBlockingQueue会阻塞,直到有元素进来;
ConcurrentLinkedQueue立即返回空
适用性:
LinkedBlockingQueue 发送消息队列(有消息就发送,无消息阻塞)
ConcurrentLinkedQueue 读取消息队列(无消息break)