2011-01-18 3 views
30

Je voudrais utiliser une liste liée comme celle décrite dans le document this. Cependant, je n'ai trouvé aucune implémentation Java sur le web.Liste chaînée simultanée verrouillée en Java

Si aucune implémentation java de la liste liée mentionnée ci-dessus existe, je pense, je voudrais utiliser le java.util.concurrent.ConcurrentLinkedQueue<E>. Est-ce un bon choix (ce n'est pas vraiment une liste chaînée)?

Si ce n'est pas un bon choix, est-ce que quelqu'un connaît une implémentation de liste liée fiable (thread-safe) sans attente (sans verrouillage) en Java?

+0

Ce n'est pas sans verrou dans n'importe quelle forme (il utilise des verrous pour ajouter/supprimer) - le commentaire de la cible a disparu ... (il s'agissait de LinkedBlockingDeque) – bestsss

+0

Eh bien, la grande question est, pourquoi pensez-vous voulez une liste simultanée de n'importe quelle forme ou forme? La plupart des méthodes List n'ont pas de sens sur une structure concurrente partagée. Pourquoi auriez-vous le nième élément? Qu'est-ce que cela signifie de toute façon obtenir le nième élément? Des choses comme la taille sont éphémères et n'ont aucune valeur en dehors de la surveillance. Pouvez-vous expliquer un peu plus comment vous voulez l'utiliser? http://permalink.gmane.org/gmane.comp.java.jsr.166-concurrency/6321 –

+0

Je veux implémenter un tampon "physique" singleton, qui est utilisé par n tampons "logiques", où chaque tampon logique est défini uniquement par ses éléments de début et de fin, st Je n'ai pas de représentation redondante de mes données en mémoire. – ptikobj

Répondre

40

ConcurrentLinkedQueue est une superbe file d'attente sans verrou et fait ce qu'une seule liste chaînée simultanée peut faire. Un petit avertissement: si vous n'utilisez pas poll ou peek et seulement iterator() (+ .remove()), il y aura une fuite de mémoire. Il s'agit d'un Queue exceptionnel.

+6

JDK 7 a un ConcurrentLinkedDeque –

+4

+1 Une belle référence pour éliminer les fuites de mémoire –

+0

disons, je veux le ConcurrentLinkedDeque, comment est l'installation en toute sécurité la version actuelle de l'aperçu jdk7? – ptikobj