Sobes.tech
Middle

Ce structuri de date în Java sunt sincronizate și care nu sunt?

sobes.tech AI

Răspuns de la AI

În Java, unele structuri de date sunt sincronizate (sigure pentru fire de execuție), iar altele nu.

Sincronizate:

  • Vector — echivalent sincronizat al ArrayList.
  • Hashtable — echivalent sincronizat al HashMap.
  • Stack — moștenește de la Vector, deci este de asemenea sincronizat.
  • Colecții învelite prin Collections.synchronizedList(), synchronizedMap() etc.
  • Clase din pachetul java.util.concurrent, de exemplu, ConcurrentHashMap, CopyOnWriteArrayList.

Nesincronizate:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Dacă trebuie să folosiți o colecție nesincronizată într-un mediu multi-thread, o puteți înveli într-una sincronizată folosind metode din Collections sau puteți folosi clase specializate din java.util.concurrent.

Exemplu:

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