Java BlockingQueue take()与poll()
在无限循环中使用Queue中的值时,会更有效:
1)阻塞队列,直到可以通过take()获得值
while (value = queue.take()) { doSomething(value); }
2)睡眠n毫秒并检查是否有可用的物品
while (true) { if ((value = queue.poll()) != null) { doSomething(value); }
Thread.sleep(1000);
}
回答:
阻塞可能更有效。在后台,take()
如果没有可用的元素,则最初调用的线程将进入睡眠状态,从而让其他线程执行所需的操作。然后,将元素添加到队列的方法将在添加元素时唤醒等待的线程,因此可以花最少的时间一遍又一遍地检查队列中元素是否可用。
以上是 Java BlockingQueue take()与poll() 的全部内容, 来源链接: utcz.com/qa/430920.html