От Javadoc:
- A ConcurrentLinkedQueue является подходящим выбором, когда многие потоки будут предоставлять доступ к общей коллекции. Эта очередь не допускает нулевые элементы.
- ArrayBlockingQueue - классический "ограниченный буфер", в котором массив фиксированного размера содержит элементы, вставленные производителями и извлеченные потребителями. Этот класс поддерживает дополнительную политику справедливости для заказа ожидающего производителя и потребительских потоков.
- LinkedBlockingQueue обычно имеют более высокую пропускную способность, чем очереди на основе массива, но менее предсказуемую производительность в большинстве параллельных приложений.
У меня есть 2 сценария, один требует очереди для поддержки многих производителей (потоки, использующие его) с одним потребителем, а другой - наоборот.
Я не понимаю, следует ли использовать ConcurrentLikedQueue
или другие (реализация array или linkedList). Wherent 'все эти реализации должны быть параллельными? Я имею в виду, может кто-нибудь объяснить мне, в чем разница между ConcurrentLikedQueue
и LinkedBlockingQueue
?
Кроме того, что такое факультативная политика конфиденциальности в ArrayBlockingQueue
, пожалуйста?