107 votes

Choisir la meilleure liste de simultanéité en Java

Mon pool de threads a un nombre fixe de threads. Ces threads ont besoin d' écrire et de lire fréquemment à partir d'une liste partagée.

Alors, quelle structure de données (il vaut mieux être une liste, doit être sans moniteur) dans le java.util.concurrent est la meilleure dans ce cas ?

75voto

Travis Webb Points 5765

Toute collection Java peut être conçue pour être thread-safe comme suit :

List newList = Collections.synchronizedList(oldList);

Ou pour créer une toute nouvelle liste thread-safe :

List newList = Collections.synchronizedList(new ArrayList());

http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#synchronizedList(java.util.List)

9voto

Ben Manes Points 1790

Si la taille de la liste est fixe, vous pouvez utiliser un AtomicReferenceArray . Cela vous permettrait d'effectuer des mises à jour indexées sur un emplacement. Vous pouvez écrire une vue de liste si nécessaire.

7voto

eSniff Points 2020

ConcurrentLinkedQueue utilise une file d'attente sans verrouillage (basée sur la nouvelle instruction CAS ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X