Буферизация данных в многопоточном java-приложении

У меня есть многопоточное приложение, которое имеет один производственный поток и несколько потребительских потоков. Данные хранятся в общей коллекции потоков и сбрасываются в базу данных при наличии достаточного количества данных в буфере.

Из javadocs -

BlockingQueue<E>

Очередь, которая дополнительно поддерживает операции, которые ожидают, пока очередь станет непустой при извлечении элемента, и ожидают, пока место в очереди станет доступным при хранении элемента.

take()

Извлекает и удаляет заголовок этой очереди, ожидая, если это необходимо, пока элемент не станет доступным.

Мои вопросы -

  1. Есть ли другая коллекция, которая имеет метод E[] take(int n)? т.е. блокировка очереди ожидает, пока элемент не станет доступным.То, что я хочу, это что он должен подождать, пока не будут доступны 100 или 200 элементов.
  2. В качестве альтернативы, есть ли другой метод, который я мог бы использовать для решения проблемы без опроса?
5
задан Kshitiz Sharma 7 June 2012 в 10:01
поделиться