Если я правильно понял, ConcurrentLinkedDeque действует как стек, если вы используете pollLast()
?
Теперь моя проблема в том, что мне нужен установленный размер ConcurrentLinkedDeque. Мой продюсер не останавливается, так что даже если у меня будет 16 ГБ оперативной памяти, у меня в конце концов закончится. ТАК можно ли установить фиксированный размер?
Моя реализация:
ConcurrentLinkedDeque<String> queue = new ConcurrentLinkedDeque<>();
Производитель (Тема 1): работает queue.add(line);
Потребитель (поток 2): работает queue.pollLast();
Обратите внимание, что оба потока работают в , а истинный цикл . Это из-за требований. Вот почему я использую ConcurrentLinkedDeque
, а не ArrayBlockingQueue
или SynchronousQueue
, потому что он не блокирует.
Также нужно ли мне что-либо объявлять synchronised
?