Sobes.tech
Middle

Quelles structures de données en Java sont synchronisées et lesquelles ne le sont pas?

sobes.tech IA

Réponse de l'IA

En Java, certaines structures de données sont synchronisées (sûres pour les threads), et d'autres ne le sont pas.

Synchronisées :

  • Vector — équivalent synchronisé de ArrayList.
  • Hashtable — équivalent synchronisé de HashMap.
  • Stack — hérite de Vector, donc également synchronisé.
  • Collections enveloppées via Collections.synchronizedList(), synchronizedMap(), etc.
  • Classes du paquet java.util.concurrent, par exemple, ConcurrentHashMap, CopyOnWriteArrayList.

Non synchronisées :

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Si vous souhaitez utiliser une collection non synchronisée dans un environnement multithread, vous pouvez l'envelopper dans une version synchronisée à l'aide des méthodes de Collections ou utiliser des classes spécialisées de java.util.concurrent.

Exemple :

List<String> list = Collections.synchronizedList(new ArrayList<>());