Sobes.tech
Middle

Quali strutture dati in Java sono sincronizzate e quali no?

sobes.tech AI

Risposta dell'AI

In Java, alcune strutture dati sono sincronizzate (thread-safe), altre no.

Sincronizzate:

  • Vector — equivalente sincronizzato di ArrayList.
  • Hashtable — equivalente sincronizzato di HashMap.
  • Stack — eredita da Vector, quindi è anch'esso sincronizzato.
  • Collezioni avvolte tramite Collections.synchronizedList(), synchronizedMap(), ecc.
  • Classi del pacchetto java.util.concurrent, ad esempio, ConcurrentHashMap, CopyOnWriteArrayList.

Non sincronizzate:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Se si desidera utilizzare una collezione non sincronizzata in un ambiente multithread, è possibile avvolgerla in una versione sincronizzata usando i metodi di Collections o utilizzare classi specializzate di java.util.concurrent.

Esempio:

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