我怎样才能在第一个位置提供LinkedBlockingQueue中的项目?

时间:2013-11-25 11:43:41

标签: java concurrency

我有一个使用((LinkedBlockingQueue)queue).take()方法获取下一个请求的函数。

如果在请求处理期间出现问题,我想在我的队列中重新提供请求,但首先要确保请求实际在到达顺序中处理

注意:此时我知道如果失败则是因为服务已关闭,请求将在几分钟内得到妥善处理。

我怎样才能实现这一目标? LinkedBlockingQueue只能向尾部提供物品,而不是向头部提供物品。我需要像queue.untake(item)

这样的东西

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

查看LinkedBlockingDequeue,您可以使用offerFirstofferLast来维护到达顺序。

答案 1 :(得分:1)

您需要LinkedBlockingDeque。使用offerFirst方法。

请注意,如果你有多个线程轮询队列,你实际上无法确定它会在其他任何事情之前被重新处理。