При потреблении значений из очереди в бесконечном цикле - что было бы более эффективно:
1) Блокировка в очереди, пока значение не будет доступно с помощью команды take()
while (value = queue.take()) { doSomething(value); }
2) Спящий режим за миллисекунды и проверка наличия элемента
while (true) {
if ((value = queue.poll()) != null) { doSomething(value); }
Thread.sleep(1000);
}