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

回到顶部