В BlockingQueue есть метод, называемый drainTo(), но он не заблокирован. Мне нужна очередь, которую я хочу заблокировать, но также способную извлекать объекты в очереди одним способом.
Object first = blockingQueue.take();
if ( blockingQueue.size() > 0 )
blockingQueue.drainTo( list );
Я думаю, что вышеприведенный код будет работать, но я ищу элегантное решение.