З JavaDocs:
- ConcurrentLinkedQueue є підходящим вибором , коли багато потоків буде загальний доступ до загальної колекції. Ця черга не дозволяє нульових елементів.
- ArrayBlockingQueue - класичний "обмежений буфер", в якому масив фіксованого розміру містить елементи, вставлені виробниками та витягнуті споживачами. Цей клас підтримує необов'язкову політику справедливості для замовлення очікуючих ниток для виробників та споживачів
- Зазвичай LinkedBlockingQueue мають більшу пропускну здатність, ніж черги на основі масиву, але менш передбачувану продуктивність у більшості одночасних додатків.
У мене є 2 сценарії, одному потрібна черга, щоб підтримувати багатьох виробників (потоки, що використовують його) з одним споживачем, а інший - навпаки.
Я не розумію, яку реалізацію використовувати. Хтось може пояснити, в чому полягають відмінності?
Крім того, що таке "факультативна політика справедливості" у програмі ArrayBlockingQueue
?