我有一个使用((LinkedBlockingQueue)queue).take()
方法获取下一个请求的函数。
如果在请求处理期间出现问题,我想在我的队列中重新提供请求,但首先要确保请求实际在到达顺序中处理
注意:此时我知道如果失败则是因为服务已关闭,请求将在几分钟内得到妥善处理。
我怎样才能实现这一目标? LinkedBlockingQueue
只能向尾部提供物品,而不是向头部提供物品。我需要像queue.untake(item)
有什么想法吗?
答案 0 :(得分:1)
查看LinkedBlockingDequeue
,您可以使用offerFirst
和offerLast
来维护到达顺序。
答案 1 :(得分:1)
您需要LinkedBlockingDeque
。使用offerFirst
方法。
请注意,如果你有多个线程轮询队列,你实际上无法确定它会在其他任何事情之前被重新处理。