BlockingQueue如何等待队列变为非空

时间:2015-04-27 21:10:52

标签: java blockingqueue

我在多人游戏中使用java游戏,我有一个发送者线程将消息从队列发送给另一个玩家。 我在这里读到: https://developer.android.com/reference/java/util/concurrent/BlockingQueue.html “另外支持等待队列变为非空的操作的队列”

哪些operetions以及如何使用它们,我知道一个infinte循环总是检查Queue是否是我想要避免的东西。

2 个答案:

答案 0 :(得分:0)

take()将允许您等到元素在队列中可用或使用poll(长超时,TimeUnit单位)等待指定的时间。

答案 1 :(得分:0)

由于这个问题似乎没有开箱即用的解决方案,我必须实现自己的解决方案。

所以,我所做的是我的void block()方法调用poll()并保存返回的项目。然后,从队列中获取项目的每个方法首先检查我们是否有一个已保存的项目,如果是,则返回并清除它,否则它将委托给底层的java阻塞队列。

幸运的是,我只使用单个线程的物品,所以我不必担心竞争条件。