Sobes.tech
Middle

Kokios duomenų struktūros Java yra sinchronizuotos, o kurios ne?

sobes.tech AI

Atsakymas iš AI

Java kalbant, kai kurios duomenų struktūros yra sinchronizuotos (saugios keliems gijų), o kai kurios — ne.

Sinchronizuotos:

  • Vector — sinchronizuotas ArrayList analogas.
  • Hashtable — sinchronizuotas HashMap analogas.
  • Stack — paveldi iš Vector, todėl taip pat sinchronizuotas.
  • Kolekcijos, apgaubtos naudojant Collections.synchronizedList(), synchronizedMap() ir pan.
  • Klasės iš java.util.concurrent paketo, pvz., ConcurrentHashMap, CopyOnWriteArrayList.

Nesinchronizuotos:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Jei norite naudoti nesinchronizuotą kolekciją daugiagijų aplinkoje, galite ją apgaubti sinchronizuota naudojant Collections metodus arba naudoti specializuotas java.util.concurrent klases.

Pavyzdys:

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