Aus den JavaDocs:
- Eine ConcurrentLinkedQueue ist eine geeignete Wahl, wenn viele Threads gemeinsam auf eine gemeinsame Sammlung zugreifen. Diese Warteschlange erlaubt keine Nullelemente.
- ArrayBlockingQueue ist ein klassischer "begrenzter Puffer", in dem ein Array mit fester Größe Elemente enthält, die von Produzenten eingefügt und von Verbrauchern extrahiert wurden. Diese Klasse unterstützt eine optionale Fairness-Richtlinie für die Bestellung wartender Produzenten- und Konsumententhreads
- LinkedBlockingQueue hat normalerweise einen höheren Durchsatz als Array-basierte Warteschlangen, aber in den meisten gleichzeitigen Anwendungen eine weniger vorhersehbare Leistung.
Ich habe zwei Szenarien, eine erfordert, dass die Warteschlange viele Produzenten (Threads, die sie verwenden) mit einem Verbraucher unterstützt, und die andere ist umgekehrt.
Ich verstehe nicht, welche Implementierung ich verwenden soll. Kann jemand erklären, was die Unterschiede sind?
Was ist die "optionale Fairness-Richtlinie" in der ArrayBlockingQueue
?