如何保持LinkedBlockingQueue中的元素?

时间:2017-08-23 20:19:37

标签: java queue delay

我在java中使用LinkedBlockingQueue,我希望在将其释放到线程之前保留队列中的元素。换句话说,我想在将一个元素排除在队列之前设置一个延迟。

private LinkedBlockingQueue<String> testQue = new LinkedBlockingQueue<String>()
if ( position.equals("leader") ) {
   //process this element as the last one

有可能吗?

1 个答案:

答案 0 :(得分:0)

查看LinkedBlockingQueue的文档:https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/LinkedBlockingQueue.html

  

E peek()获取但不移除此队列的头部,如果此队列为空,则返回null。

     

E poll()检索并删除此队列的头部,如果此队列为空,则返回null。

     

E poll(长超时,TimeUnit单位)检索并移除此队列的头部,如有必要,等待指定的等待时间以使元素可用。

您有两种选择:

  1. 使用peek()处理元素,完成后使用pool()。如果你真的想等到它完成,你也可以在Thread.sleep(time)peek()之间加pool()
  2. 如果现在处理元素需要多长时间,请使用poll(long timeout, TimeUnit unit)