Z JavaDocs:
- ConcurrentLinkedQueue jest właściwym wyborem, gdy wiele wątków będzie współużytkować dostęp do wspólnej kolekcji. Ta kolejka nie zezwala na elementy puste.
- ArrayBlockingQueue to klasyczny „ograniczony bufor”, w którym tablica o stałej wielkości zawiera elementy wstawiane przez producentów i wyodrębniane przez konsumentów. Ta klasa obsługuje opcjonalne zasady uczciwości dotyczące zamawiania oczekujących wątków producenta i konsumenta
- LinkedBlockingQueue zwykle ma wyższą przepustowość niż kolejki oparte na tablicach, ale mniej przewidywalną wydajność w większości współbieżnych aplikacji.
Mam 2 scenariusze, jeden wymaga kolejki do obsługi wielu producentów (wątków z niej korzystających) z jednym konsumentem, a drugi na odwrót.
Nie rozumiem, której implementacji użyć. Czy ktoś może wyjaśnić, jakie są różnice?
Co to jest „opcjonalna polityka uczciwości” w ArrayBlockingQueue
?