CodeGym/Java kurs/Modul 3/Samtidige samlinger

Samtidige samlinger

Tilgjengelig

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 .

1
Oppgave
Modul 3,  nivålekse
Låst
10 plus 20 equals 20
task4203
1
Oppgave
Modul 3,  nivålekse
Låst
Thread-unsafe Map
task4204
Kommentarer
  • Populær
  • Ny
  • Gammel
Du må være pålogget for å legge igjen en kommentar
Denne siden har ingen kommentarer ennå