Da JavaDocs:
- Un ConcurrentLinkedQueue è una scelta appropriata quando molti thread condivideranno l'accesso a una raccolta comune. Questa coda non consente elementi null.
- ArrayBlockingQueue è un classico "buffer limitato", in cui un array di dimensioni fisse contiene elementi inseriti dai produttori ed estratti dai consumatori. Questa classe supporta una politica di equità opzionale per l'ordinazione di thread di produttori e consumatori in attesa
- LinkedBlockingQueue in genere ha un throughput più elevato rispetto alle code basate su array ma prestazioni meno prevedibili nella maggior parte delle applicazioni simultanee.
Ho 2 scenari, uno richiede la coda per supportare molti produttori (thread che lo utilizzano) con un consumatore e l'altro è il contrario.
Non capisco quale implementazione usare. Qualcuno può spiegare quali sono le differenze?
Inoltre, qual è la "politica di equità facoltativa" nel ArrayBlockingQueue
?