I found the same problem with ArrayBlockingQueue. We need additional methods that were missing:
void putAll(Collection<? extends E> c)
throws InterruptedExceptionint drainAtLeastOneTo(@OutputParam Collection<? super E> c)
throws InterruptedExceptionint drainAtLeastOneTo(@OutputParam Collection<? super E> c, int maxElements)
throws InterruptedException
BlockingQueue<List<E>>, malloc'ing. . , , "".
: , . , . drainTo() , drainAtLeastOneTo() .
ArrayBlockingQueue . , , , BlockingQueue.
( ?) LMAX Disruptor, BlockingQueue, , .