No JavaDocs:
- Um ConcurrentLinkedQueue é uma escolha apropriada quando muitos threads compartilham o acesso a uma coleção comum. Essa fila não permite elementos nulos.
- ArrayBlockingQueue é um "buffer limitado" clássico, no qual uma matriz de tamanho fixo mantém elementos inseridos pelos produtores e extraídos pelos consumidores. Esta classe suporta uma política de justiça opcional para solicitar threads de produtor e consumidor em espera
- O LinkedBlockingQueue normalmente tem uma taxa de transferência mais alta que as filas baseadas em matriz, mas desempenho menos previsível na maioria dos aplicativos simultâneos.
Eu tenho 2 cenários, um requer a fila para oferecer suporte a muitos produtores (threads usando) com um consumidor e o outro é o contrário.
Não entendo qual implementação usar. Alguém pode explicar quais são as diferenças?
Além disso, qual é a 'política de justiça opcional' na ArrayBlockingQueue
?