CodeGym/Java kursus/Modul 3/Samtidige indsamlinger

Samtidige indsamlinger

Ledig

CopyOnWriteArrayList

Tilføj , sæt , fjern handlingerne på en given samling resulterer i, at en ny kopi af det interne array bliver oprettet. Dette sikrer, at vi ikke fanger ConcurrentModificationException .

Bare husk, at når du kopierer et array, kopieres kun referencer til objekter, inklusive adgang til felterne med ikke-trådsikre elementer. Sådanne samlinger bruges bedst i tilfælde med et minimum antal skriveoperationer.

CopyOnWriteArrayList<E> er en trådsikker analog af ArrayList , implementeret på basis af CopyOnWrite-algoritmer. Yderligere metoder og konstruktør er beskrevet nedenfor:

CopyOnWriteArrayList(E[] toCopyIn) En konstruktør, der tager et array som input.
int indexOf(E e, int index) Returnerer indekset for det første fundne element, startende ved det givne indeks.
int lastIndexOf(E e, int indeks) Returnerer indekset for det første element fundet i en omvendt søgning, startende ved det givne indeks.
boolesk addIfFraværende(E e) Tilføj et element, hvis det ikke er i samlingen. Lige- metoden bruges til at sammenligne elementer .
int addAllAbsent(Samling<? udvider E> c) Tilføj elementer, hvis de ikke er i samlingen. Returnerer antallet af tilføjede elementer.

ConcurrentMap Interface

Forbedrede implementeringer af HashMap og TreeMap med understøttelse af multithreading og skalerbarhed.

ConcurrentMap<K, V> er en grænseflade, der udvider Map med yderligere atomoperationer.

V putIfFraværende(K-nøgle, V-værdi) Tilføjer kun et nyt nøgle-værdi-par, hvis nøglen ikke er i samlingen. Returnerer den forrige værdi for den givne nøgle.
boolesk fjern (objektnøgle, objektværdi) Fjerner kun nøgleværdi-parret, hvis den givne nøgle matcher den givne værdi i kortet. Returnerer sand, hvis elementet blev fjernet.
boolesk erstatning (K-tast, V oldValue, V newValue) Erstatter kun den gamle værdi med den nye med nøgle, hvis den gamle værdi matcher den givne værdi i kortet. Returnerer sand, hvis værdien er blevet erstattet med en ny.
V erstatte (K nøgle, V værdi) Erstatter kun en gammel værdi med en ny med nøgle, hvis nøglen er knyttet til en værdi. Returnerer den forrige værdi for den givne nøgle.

ConcurrentHashMap<K, V> - her præsenteres dataene i form af segmenter, som er opdelt i nøglehashs. Som et resultat, hvis du har brug for adgang, så er segmentet låst, ikke objektet. Iteratorer kaster ikke ConcurrentModificationException og repræsenterer data for en bestemt periode.

Implementeringer af ConcurrentHashMap

ConcurrentHashMap<K, V> - her præsenteres dataene i form af segmenter, opdelt efter nøglehashs. Som et resultat er dataadgang låst af segmenter, ikke af ét objekt. Derudover repræsenterer iteratorer data for et bestemt stykke tid og kaster ikke ConcurrentModificationException .

ConcurrentNavigableMap<K,V> - udvider NavigableMap- grænsefladen og returnerer et ConcurrentNavigableMap . Alle iteratorer er sikre at bruge og kaster ikke ConcurrentModificationException .

ConcurrentSkipListMap<K, V> er en analog af TreeMap til multithreading. Dataene er sorteret efter nøgle, og den gennemsnitlige log(N) ydeevne er garanteret forcontainsKey,get,put,removeog andre lignende operationer.

ConcurrentSkipListSet<E> er en implementering af Set- grænsefladen baseret på ConcurrentSkipListMap .

1
Opgave
Modul 3,  niveaulektie
Låst
10 plus 20 equals 20
task4203
1
Opgave
Modul 3,  niveaulektie
Låst
Thread-unsafe Map
task4204
Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu