CopyOnWriteArrayList
Add- , set- , remove- operasjonene på en gitt samling resulterer i at en ny kopi av den interne matrisen blir opprettet. Dette sikrer at vi ikke fanger ConcurrentModificationException .
Bare husk at når du kopierer en matrise, kopieres bare referanser til objekter, inkludert tilgang til feltene til ikke-trådsikre elementer. Slike samlinger brukes best i tilfeller med et minimum antall skriveoperasjoner.

CopyOnWriteArrayList<E> er en trådsikker analog av ArrayList , implementert på grunnlag av CopyOnWrite-algoritmer. Ytterligere metoder og konstruktør er beskrevet nedenfor:
CopyOnWriteArrayList(E[] toCopyIn) | En konstruktør som tar en matrise som input. |
int indexOf(E e, int index) | Returnerer indeksen til det første elementet som ble funnet, med start på den gitte indeksen. |
int lastIndexOf(E e, int indeks) | Returnerer indeksen til det første elementet som ble funnet i et omvendt søk, med start på den gitte indeksen. |
boolsk addIfAbsent(E e) | Legg til et element hvis det ikke er i samlingen. Lik metoden brukes til å sammenligne elementer . |
int addAllAbsent(Samling<? utvider E> c) | Legg til elementer hvis de ikke er i samlingen. Returnerer antall elementer lagt til. |
ConcurrentMap-grensesnitt
Forbedrede implementeringer av HashMap og TreeMap med støtte for multithreading og skalerbarhet.

ConcurrentMap<K, V> er et grensesnitt som utvider Map med ytterligere atomoperasjoner.
V putIfFraværende(K-nøkkel, V-verdi) | Legger til et nytt nøkkelverdi-par bare hvis nøkkelen ikke er i samlingen. Returnerer forrige verdi for den gitte nøkkelen. |
boolsk fjern (objektnøkkel, objektverdi) | Fjerner nøkkelverdi-paret bare hvis den gitte nøkkelen samsvarer med den gitte verdien i kartet. Returnerer sann hvis elementet ble fjernet. |
boolsk erstatt (K-tast, V oldValue, V newValue) | Erstatter den gamle verdien med den nye med nøkkel bare hvis den gamle verdien samsvarer med den gitte verdien i kartet. Returnerer sann hvis verdien er erstattet med en ny. |
V erstatte (K-tast, V-verdi) | Erstatter en gammel verdi med en ny med nøkkel bare hvis nøkkelen er knyttet til en verdi. Returnerer forrige verdi for den gitte nøkkelen. |
ConcurrentHashMap<K, V> - her presenteres dataene i form av segmenter, som er delt inn i nøkkelhasher. Som et resultat, hvis du trenger tilgang, er segmentet låst, ikke objektet. Iteratorer kaster ikke ConcurrentModificationException og representerer data for en bestemt tidsperiode.
Implementeringer av ConcurrentHashMap
ConcurrentHashMap<K, V> - her presenteres dataene i form av segmenter, brutt ned etter nøkkelhash. Som et resultat er datatilgang låst av segmenter, ikke av ett objekt. I tillegg representerer iteratorer data for en bestemt tidsperiode og kaster ikke ConcurrentModificationException .
ConcurrentNavigableMap<K,V> - utvider NavigableMap- grensesnittet og returnerer et ConcurrentNavigableMap . Alle iteratorer er trygge å bruke og kaster ikke ConcurrentModificationException .
ConcurrentSkipListMap<K, V> er en analog av TreeMap for multithreading. Dataene er sortert etter nøkkel og gjennomsnittlig logg(N)-ytelse er garantert forcontainsKey,get,put,removeog andre lignende operasjoner.
ConcurrentSkipListSet<E> er en implementering av Set- grensesnittet basert på ConcurrentSkipListMap .
GO TO FULL VERSION