我在java中使用LinkedBlockingQueue
,我希望在将其释放到线程之前保留队列中的元素。换句话说,我想在将一个元素排除在队列之前设置一个延迟。
private LinkedBlockingQueue<String> testQue = new LinkedBlockingQueue<String>()
if ( position.equals("leader") ) {
//process this element as the last one
有可能吗?
答案 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单位)检索并移除此队列的头部,如有必要,等待指定的等待时间以使元素可用。
您有两种选择:
peek()
处理元素,完成后使用pool()
。如果你真的想等到它完成,你也可以在Thread.sleep(time)
和peek()
之间加pool()
。poll(long timeout, TimeUnit unit)
。