Java BlockingQueue take() 与 poll() [英] Java BlockingQueue take() vs poll()

查看:58
本文介绍了Java BlockingQueue take() 与 poll()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

When consuming values from a Queue in an infinite loop -- what would be more efficient:

1) Blocking on the Queue until a value is available via take()

while (value = queue.take()) { doSomething(value); }

2) Sleeping for n milliseconds and checking if an item is available

while (true) {

    if ((value = queue.poll()) != null) { doSomething(value); }

    Thread.sleep(1000);
}

解决方案

Blocking is likely more efficient. In the background, the thread that initially calls take() goes to sleep if there is no element available, letting other threads do whatever they need to do. The methods that add elements to the Queue will then wake up waiting threads when an element is added, so minimal time is spent checking the queue over and over again for whether an element is available.

这篇关于Java BlockingQueue take() 与 poll()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆