À partir des JavaDocs:
- Un ConcurrentLinkedQueue est un choix approprié lorsque de nombreux threads partageront l'accès à une collection commune. Cette file d'attente n'autorise pas les éléments nuls.
- ArrayBlockingQueue est un "tampon borné" 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 stratégie d'équité facultative pour la commande des threads producteurs et consommateurs en attente
- LinkedBlockingQueue a généralement un débit plus élevé que les files d'attente basées sur un tableau, mais des performances moins prévisibles dans la plupart des applications simultanées.
J'ai 2 scénarios, l'un nécessite que la file d'attente prenne en charge de nombreux producteurs (threads l'utilisant) avec un consommateur et l'autre est l'inverse.
Je ne comprends pas quelle implémentation utiliser. Quelqu'un peut-il expliquer quelles sont les différences?
Aussi, quelle est la «politique d'équité facultative» dans le ArrayBlockingQueue
?