Bonjour,
Est-ce que quelqu'un pourrait m'indiquer un endroit où on peut trouver une liste plus ou moins exhaustive des classes Java Collections qui sont thread-safe et celles qui ne le sont pas ? Merci d'avance.
Bonjour,
Est-ce que quelqu'un pourrait m'indiquer un endroit où on peut trouver une liste plus ou moins exhaustive des classes Java Collections qui sont thread-safe et celles qui ne le sont pas ? Merci d'avance.
Salut,
- Les classes de l'ancienne API sont thread-safe (Hashtable, Vector et Stack) mais ne devrait pas être utilisé en général.
- Sauf erreur, les classes de la "nouvelle" API de Collections (toutes les autres collections de java.util) ne sont pas thread-safe, mais il est possible d'en obtenir une version thread-safe via les méthodes Collections.synchronizedXXXX().
- Enfin les collections du package java.util.concurrent sont logiquement thread-safe...
a++
Ca veut dire que les seuls structures de données qu'on peut utiliser sans les synchroniser soi-même, c'est les objets retournés par Collections synchronizedXXX() et les objets dans java.util.concurrent, selon la bonne pratique qui veut que toute application doit être considérée comme une application multithreadée ? Ca bouleverse beaucoup de mes habitudes...
JBusyComponent, une API pour rendre occupé un composant swing.
SCJP Java 6.0 (90% pass score)
Bien le bonjour, je me permet d'intégrer cette conversation en posant une petite question.
Dans le cas où une COllection devrait être synchronisée, quelle solution choisir?
1/ Vector et etc...
2/ COllection standard (LinkedList et autre) synchronisé par nos soins
3/ les classes du package java.util.concurrent
Merci par avance p our vos réponses
Bonne chance, Bonne journée, bonne année bonne santée et etc ...
Youpi la vie est belle ! Et vive la fraicheur
Vector, Stack et Hashtable tu peux les oublier. Comme l'a dit adiGuba, ces classes ne devraient plus être utilisées.
En cas de besoin de collections thread-safe, on utilise généralement les versions synchronisées des collections standards (récupérées via les méthodes synchronisedXXX() de la classe Collections)
Les collections présentes dans le package java.util.concurrent servent surtout pour des besoins spécifiques :
- La BlockingQueue est une queue (une file donc F.I.F.O.) qui se bloque lorsque l’on tente d’ajouter ou de retirer un élément tant que l’espace disponible n’est pas suffisant (modèle producteur / consommateur).
- La ConcurrentMap est une Map thread-safe qui se distingue par le fait qu'elle peut être supervisée par plusieurs verrous d'exclusion c'est à dire qu'elle peut autoriser plusieurs écritures simultanées, contrairement à la Map classique synchronisée qui n'a qu'un seul verrou d'exclusion (1 seule écriture simultanée possible par conséquent).
-"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
-"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".
Pieds d'argile (1996), Terry Pratchett 1948 - 2015
(trad. Patrick Couton)
Merci pour ta réponse Deadpool.
C'est exactement ce que j'attendais comme réponse ^^
Bonne chance, Bonne journée, bonne année bonne santée et etc ...
Youpi la vie est belle ! Et vive la fraicheur
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager