CodeGym /Java Course /Modulo 3 /Raccolte simultanee

Raccolte simultanee

Modulo 3
Livello 19 , Lezione 2
Disponibile

CopyOnWriteArrayList

Le operazioni add , set , remove su una data raccolta comportano la creazione di una nuova copia dell'array interno. Ciò garantisce che non rileviamo ConcurrentModificationException .

Ricorda solo che quando si copia un array, vengono copiati solo i riferimenti agli oggetti, incluso l'accesso ai campi degli elementi non thread-safe. Tali raccolte sono utilizzate al meglio nei casi con un numero minimo di operazioni di scrittura.

CopyOnWriteArrayList<E> è un analogo thread-safe di ArrayList , implementato sulla base degli algoritmi CopyOnWrite. Ulteriori metodi e costruttore sono descritti di seguito:

CopyOnWriteArrayList(E[] toCopyIn) Un costruttore che accetta un array come input.
int indexOf(E e, int indice) Restituisce l'indice del primo elemento trovato, a partire dall'indice specificato.
int lastIndexOf(E e, int indice) Restituisce l'indice del primo elemento trovato in una ricerca inversa, partendo dall'indice dato.
booleano addIfAbsent(E e) Aggiungi un elemento se non è nella raccolta. Il metodo equals viene utilizzato per confrontare gli elementi .
int addAllAbsent(Collection<? extends E> c) Aggiungi elementi se non sono nella raccolta. Restituisce il numero di elementi aggiunti.

Interfaccia ConcurrentMap

Implementazioni migliorate di HashMap e TreeMap con supporto per multithreading e scalabilità.

ConcurrentMap<K, V> è un'interfaccia che estende Map con operazioni atomiche aggiuntive.

V putIfAbsent(chiave K, valore V) Aggiunge una nuova coppia chiave-valore solo se la chiave non è nella raccolta. Restituisce il valore precedente per la chiave data.
boolean remove(Chiave oggetto, Valore oggetto) Rimuove la coppia chiave-valore solo se la chiave specificata corrisponde al valore specificato nella mappa. Restituisce true se l'elemento è stato rimosso correttamente.
sostituzione booleana (tasto K, V vecchioValore, V nuovoValore) Sostituisce il vecchio valore con quello nuovo per chiave solo se il vecchio valore corrisponde al valore specificato nella mappa. Restituisce true se il valore è stato sostituito con uno nuovo.
Sostituzione V (tasto K, valore V) Sostituisce un vecchio valore con uno nuovo per chiave solo se la chiave è associata a qualsiasi valore. Restituisce il valore precedente per la chiave data.

ConcurrentHashMap<K, V> - qui i dati sono presentati sotto forma di segmenti, che sono divisi in hash chiave. Di conseguenza, se è necessario l'accesso, il segmento è bloccato, non l'oggetto. Gli iteratori non generano ConcurrentModificationException e rappresentano i dati per un periodo di tempo specifico.

Implementazioni di ConcurrentHashMap

ConcurrentHashMap<K, V> - qui i dati sono presentati sotto forma di segmenti, suddivisi per hash chiave. Di conseguenza, l'accesso ai dati è bloccato da segmenti, non da un oggetto. Inoltre, gli iteratori rappresentano i dati per un intervallo di tempo specifico e non generano ConcurrentModificationException .

ConcurrentNavigableMap<K,V> - estende l'interfaccia NavigableMap e restituisce un ConcurrentNavigableMap . Tutti gli iteratori sono sicuri da usare e non generano ConcurrentModificationException .

ConcurrentSkipListMap<K, V> è un analogo di TreeMap per il multithreading. I dati sono ordinati per chiave e le prestazioni medie di log(N) sono garantite percontainsKey,get,put,removee altre operazioni simili.

ConcurrentSkipListSet<E> è un'implementazione dell'interfaccia Set basata su ConcurrentSkipListMap .

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION