Extrait des JavaDocs :
- A File d'attente simultanée (ConcurrentLinkedQueueue) est un choix approprié lorsque plusieurs threads partagent l'accès à une collection commune. Cette file d'attente n'autorise pas les éléments nuls.
- ArrayBlockingQueue est un "tampon limité" classique, dans lequel un tableau de taille fixe contient des éléments insérés par les producteurs et extraits par les consommateurs. Cette classe prend en charge une politique d'équité optionnelle pour ordonner les fils d'attente des producteurs et des consommateurs
- LinkedBlockingQueue ont généralement un débit plus élevé que les files d'attente basées sur des tableaux, mais des performances moins prévisibles dans la plupart des applications concurrentes.
J'ai deux scénarios, l'un exige que la file d'attente supporte de nombreux producteurs (threads qui l'utilisent) avec un seul consommateur et l'autre est dans l'autre sens.
Je ne comprends pas quelle implémentation utiliser. Quelqu'un peut-il m'expliquer quelles sont les différences ?
Par ailleurs, quelle est la "politique d'équité optionnelle" dans le cadre de la ArrayBlockingQueue
?
1 votes
Vous avez également oublié de parler de PriorityBlockingQueue, qui est utile pour spécifier l'ordre dans lequel les threads sont traités.