我如何ConcurrentLinkedQueue在Java中使用?
使用这个LinkedQueue,我是否需要担心队列中的并发性?或者我只需要定义两个方法(一个用于从列表中检索元素,另一个用于向列表中添加元素)?
注意:显然这两种方法必须同步.对?
编辑:我正在尝试做的是:我有一个类(在Java中)有一个方法从队列中检索项目,另一个类用一个方法将项目添加到队列中.从列表中添加和检索的项目是我自己的类的对象.
还有一个问题:我是否需要在remove方法中执行此操作:
while (queue.size() == 0){
wait();
queue.poll();
}
Run Code Online (Sandbox Code Playgroud)
我只有一个消费者和一个生产者.
我已经阅读了博客,但我不确定他的结论是否正确:
http://www.javacodegeeks.com/2010/09/java-best-practices-queue-battle-and.html#ixzz1seaiSLwp
他说:从提供的性能结果可以看出,LinkedBlockingQueue实现了最佳的组合(添加和删除元素)性能结果,应该是实现生产者 - 消费者schenarios的头号候选者.
我想知道,如果我不在我的代码中使用锁定,那么它会不会更快?
那么为什么LinkedBlockingQueue比无锁队列(ConcurrentLinkedQueue)更快?
谢谢 !
我需要一个可以由多个读者处理的队列.
读者将一个元素出列并将其发送到REST服务.
重要的是要注意:
我有什么选择?