我看过博客,但我不确定他的结论是否正确:
http://www.javacodegeeks.com/2010/09/java-best-practices-queue-battle-and.html#ixzz1seaiSLwp
他说:正如您从提供的性能结果中看到的那样,LinkedBlockingQueue 实现了最佳组合(添加和删除元素)性能结果,应该是您实现生产者 - 消费者方案的第一候选者。
我想知道,如果我不在我的代码中使用 lock 会不会更快?
那么为什么 LinkedBlockingQueue 比无锁 Queue(ConcurrentLinkedQueue) 更快?
谢谢!
最佳答案
ConcurrentLinkedQueue 不是阻塞队列。它没有实现 BlockingQueue 接口(interface),因此不提供阻塞方法 put() 和 take()。这些方法对于生产者/消费者设置是必需的,因为您需要安排消费者在没有任何东西可消费时阻塞,以及生产者在消费者消费速度不够快时阻塞。
关于java - LinkedBlockingQueue 和 ConcurrentLinkedQueue 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12274608/