Gleichzeitige Sammlungen

Verfügbar

CopyOnWriteArrayList

Die Operationen „add “, „set “ und „ remove “ für eine bestimmte Sammlung führen dazu, dass eine neue Kopie des internen Arrays erstellt wird. Dadurch wird sichergestellt, dass wir keine ConcurrentModificationException abfangen .

Denken Sie daran, dass beim Kopieren eines Arrays nur Verweise auf Objekte kopiert werden, einschließlich des Zugriffs auf die Felder nicht threadsicherer Elemente. Solche Sammlungen werden am besten in Fällen mit einer minimalen Anzahl von Schreibvorgängen verwendet.

CopyOnWriteArrayList<E> ist ein threadsicheres Analogon von ArrayList , das auf der Grundlage von CopyOnWrite-Algorithmen implementiert wird. Weitere Methoden und Konstruktoren werden im Folgenden beschrieben:

CopyOnWriteArrayList(E[] toCopyIn) Ein Konstruktor, der ein Array als Eingabe verwendet.
int indexOf(E e, int index) Gibt den Index des ersten gefundenen Elements zurück, beginnend beim angegebenen Index.
int lastIndexOf(E e, int index) Gibt den Index des ersten Elements zurück, das bei einer Rückwärtssuche gefunden wurde, beginnend beim angegebenen Index.
boolean addIfAbsent(E e) Fügen Sie ein Element hinzu, wenn es nicht in der Sammlung enthalten ist. Zum Vergleichen von Elementen wird die Methode equals verwendet .
int addAllAbsent(Collection<? erweitert E> c) Fügen Sie Elemente hinzu, wenn sie nicht in der Sammlung enthalten sind. Gibt die Anzahl der hinzugefügten Elemente zurück.

ConcurrentMap-Schnittstelle

Verbesserte Implementierungen von HashMap und TreeMap mit Unterstützung für Multithreading und Skalierbarkeit.

ConcurrentMap<K, V> ist eine Schnittstelle, die Map um zusätzliche atomare Operationen erweitert.

V putIfAbsent(K-Taste, V-Wert) Fügt nur dann ein neues Schlüssel-Wert-Paar hinzu, wenn der Schlüssel nicht in der Sammlung enthalten ist. Gibt den vorherigen Wert für den angegebenen Schlüssel zurück.
boolescher Wert Remove(Objektschlüssel, Objektwert) Entfernt das Schlüssel-Wert-Paar nur, wenn der angegebene Schlüssel mit dem angegebenen Wert in der Map übereinstimmt. Gibt true zurück, wenn das Element erfolgreich entfernt wurde.
boolescher Ersatz (K-Taste, V alter Wert, V neuer Wert) Ersetzt den alten Wert nur dann per Schlüssel durch den neuen, wenn der alte Wert mit dem angegebenen Wert in der Karte übereinstimmt. Gibt true zurück, wenn der Wert durch einen neuen ersetzt wurde.
V ersetzen (K-Taste, V-Wert) Ersetzt einen alten Wert nur dann per Schlüssel durch einen neuen, wenn der Schlüssel mit einem beliebigen Wert verknüpft ist. Gibt den vorherigen Wert für den angegebenen Schlüssel zurück.

ConcurrentHashMap<K, V> – hier werden die Daten in Form von Segmenten dargestellt, die in Schlüssel-Hashes unterteilt sind. Wenn Sie also Zugriff benötigen, wird das Segment gesperrt, nicht das Objekt. Iteratoren lösen keine ConcurrentModificationException aus und stellen Daten für einen bestimmten Zeitraum dar.

Implementierungen von ConcurrentHashMap

ConcurrentHashMap<K, V> – hier werden die Daten in Form von Segmenten dargestellt, aufgeschlüsselt nach Schlüssel-Hashes. Dadurch wird der Datenzugriff für Segmente und nicht für ein einzelnes Objekt gesperrt. Darüber hinaus stellen Iteratoren Daten für einen bestimmten Zeitraum dar und lösen keine ConcurrentModificationException aus .

ConcurrentNavigableMap<K,V> – erweitert die NavigableMap- Schnittstelle und gibt eine ConcurrentNavigableMap zurück . Alle Iteratoren sind sicher zu verwenden und lösen keine ConcurrentModificationException aus .

ConcurrentSkipListMap<K, V> ist ein Analogon von TreeMap für Multithreading. Die Daten werden nach Schlüssel sortiert und die durchschnittliche Log(N)-Leistung ist für „containsKey“, „get“, „put“, „remove“ und andere ähnliche Vorgänge garantiert.

ConcurrentSkipListSet<E> ist eine Implementierung der Set- Schnittstelle basierend auf ConcurrentSkipListMap .

1
Aufgabe
Modul 3: Java Professional,  Level 19Lektion 2
Gesperrt
10 plus 20 equals 20
task4203
1
Aufgabe
Modul 3: Java Professional,  Level 19Lektion 2
Gesperrt
Thread-unsafe Map
task4204
Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare