CodeGym/Java kurs/Modul 3/Samtidiga samlingar

Samtidiga samlingar

Nivå, Lektion
Tillgängliga

CopyOnWriteArrayList

Åtgärderna lägg till , ställ in , ta bort på en given samling resulterar i att en ny kopia av den interna arrayen skapas. Detta säkerställer att vi inte fångar ConcurrentModificationException .

Kom bara ihåg att när du kopierar en array kopieras endast referenser till objekt, inklusive tillgång till fälten för icke-trådsäkra element. Sådana samlingar används bäst i fall med ett minsta antal skrivoperationer.

CopyOnWriteArrayList<E> är en trådsäker analog till ArrayList , implementerad på basis av CopyOnWrite-algoritmer. Ytterligare metoder och konstruktör beskrivs nedan:

CopyOnWriteArrayList(E[] toCopyIn) En konstruktor som tar en array som indata.
int indexOf(E e, int index) Returnerar indexet för det första elementet som hittades, med början vid det givna indexet.
int lastIndexOf(E e, int index) Returnerar indexet för det första elementet som hittades i en omvänd sökning, med början vid det givna indexet.
boolesk addIfAbsent(E e) Lägg till ett element om det inte finns i samlingen. Likametoden används för att jämföra element .
int addAllAbsent(Samling<? sträcker sig E> c) Lägg till element om de inte finns i samlingen. Returnerar antalet tillagda element.

ConcurrentMap-gränssnitt

Förbättrade implementeringar av HashMap och TreeMap med stöd för multithreading och skalbarhet.

ConcurrentMap<K, V> är ett gränssnitt som utökar Map med ytterligare atomoperationer.

V putIfAbsent(K-nyckel, V-värde) Lägger till ett nytt nyckel-värdepar endast om nyckeln inte finns i samlingen. Returnerar föregående värde för den givna nyckeln.
boolean remove(Objektnyckel, Objektvärde) Tar endast bort nyckel-värdeparet om den givna nyckeln matchar det angivna värdet i kartan. Returnerar sant om elementet har tagits bort.
boolean replace(K-nyckel, V oldValue, V newValue) Ersätter det gamla värdet med det nya med nyckel endast om det gamla värdet matchar det angivna värdet i kartan. Returnerar sant om värdet har ersatts med ett nytt.
V ersätt (K-nyckel, V-värde) Ersätter ett gammalt värde med ett nytt med nyckel endast om nyckeln är associerad med något värde. Returnerar föregående värde för den givna nyckeln.

ConcurrentHashMap<K, V> - här presenteras data i form av segment, som är uppdelade i nyckelhash. Som ett resultat, om du behöver åtkomst, är segmentet låst, inte objektet. Iteratorer kastar inte ConcurrentModificationException och representerar data för en viss tidsperiod.

Implementeringar av ConcurrentHashMap

ConcurrentHashMap<K, V> - här presenteras data i form av segment, uppdelade efter nyckelhaschar. Som ett resultat låses dataåtkomst av segment, inte av ett objekt. Dessutom representerar iteratorer data för en specifik tidsperiod och kastar inte ConcurrentModificationException .

ConcurrentNavigableMap<K,V> - utökar NavigableMap- gränssnittet och returnerar en ConcurrentNavigableMap . Alla iteratorer är säkra att använda och kastar inte ConcurrentModificationException .

ConcurrentSkipListMap<K, V> är en analog till TreeMap för multithreading. Data sorteras efter nyckel och genomsnittlig log(N) prestanda garanteras förcontainsKey,get,put,removeoch andra liknande operationer.

ConcurrentSkipListSet<E> är en implementering av Set- gränssnittet baserat på ConcurrentSkipListMap .

1
Uppgift
Modul 3,  nivålektion
Låst
10 plus 20 equals 20
task4203
1
Uppgift
Modul 3,  nivålektion
Låst
Thread-unsafe Map
task4204
Kommentarer
  • Populär
  • Ny
  • Gammal
Du måste vara inloggad för att lämna en kommentar
Den här sidan har inga kommentarer än