У меня есть многопоточное приложение, которое имеет один производственный поток и несколько потребительских потоков. Данные хранятся в общей коллекции потоков и сбрасываются в базу данных при наличии достаточного количества данных в буфере.
Из javadocs -
BlockingQueue<E>
Очередь, которая дополнительно поддерживает операции, которые ожидают, пока очередь станет непустой при извлечении элемента, и ожидают, пока место в очереди станет доступным при хранении элемента.
take()
Извлекает и удаляет заголовок этой очереди, ожидая, если это необходимо, пока элемент не станет доступным.
Мои вопросы -
- Есть ли другая коллекция, которая имеет метод E[] take(int n)? т.е. блокировка очереди ожидает, пока элемент не станет доступным.То, что я хочу, это что он должен подождать, пока не будут доступны 100 или 200 элементов.
- В качестве альтернативы, есть ли другой метод, который я мог бы использовать для решения проблемы без опроса?