CodeGym /Kursus Jawa /3. modul /Koleksi bebarengan

Koleksi bebarengan

3. modul
tingkat , wulangan
kasedhiya

CopyOnWriteArrayList

Operasi nambah , nyetel , mbusak ing koleksi tartamtu ngasilake salinan anyar saka array internal sing digawe . Iki mesthekake yen kita ora nyekel ConcurrentModificationException .

Elinga yen nalika nyalin array, mung referensi kanggo obyek sing disalin, kalebu akses menyang kolom unsur non-thread-aman. Koleksi kasebut paling apik digunakake ing kasus kanthi jumlah minimal operasi nulis.

CopyOnWriteArrayList<E> iku analog thread-aman saka ArrayList , dipun ginakaken ing basis saka algoritma CopyOnWrite. Cara lan konstruktor tambahan diterangake ing ngisor iki:

CopyOnWriteArrayList(E[] toCopyIn) Konstruktor sing njupuk array minangka input.
int indexOf(E e, int indeks) Ngasilake indeks unsur pisanan sing ditemokake, diwiwiti saka indeks sing diwenehake.
int lastIndexOf(E e, int indeks) Ngasilake indeks saka unsur pisanan sing ditemokake ing telusuran mbalikke, diwiwiti saka indeks sing diwenehake.
boolean addIfAbsent(E e) Tambah unsur yen ora ana ing koleksi. Cara sing padha digunakake kanggo mbandhingake unsur .
int addAllAbsent(Koleksi <? ngluwihi E> c) Tambah unsur yen ora ana ing koleksi. Ngasilake jumlah unsur sing ditambahake.

Antarmuka ConcurrentMap

Peningkatan implementasi HashMap lan TreeMap kanthi dhukungan kanggo multithreading lan skalabilitas.

ConcurrentMap<K, V> minangka antarmuka sing ngluwihi Map kanthi operasi atom tambahan.

V putIfAbsent(K kunci, nilai V) Nambah pasangan kunci-nilai anyar mung yen kunci ora ana ing koleksi. Ngasilake nilai sadurunge kanggo kunci sing diwenehake.
boolean mbusak (tombol Obyek, Nilai Obyek) Mbusak pasangan kunci-nilai mung yen kunci sing diwenehake cocog karo nilai sing diwenehake ing Peta. Ngasilake bener yen unsur kasil dibusak.
ngganti boolean (kunci K, V oldValue, V newValue) Ngganti nilai lawas karo anyar kanthi tombol mung yen nilai lawas cocog karo nilai sing diwenehake ing Peta. Ngasilake bener yen nilai wis diganti karo sing anyar.
Ganti V (kunci K, nilai V) Ngganti nilai lawas karo anyar dening tombol mung yen tombol digandhengake karo sembarang nilai. Ngasilake nilai sadurunge kanggo kunci sing diwenehake.

ConcurrentHashMap<K, V> - ing kene data ditampilake ing wangun segmen, sing dipérang dadi hashs tombol. Akibaté, yen sampeyan butuh akses, segmen kasebut dikunci, dudu obyek kasebut. Iterator ora mbuwang ConcurrentModificationException lan makili data kanggo wektu tartamtu.

Implementasi ConcurrentHashMap

ConcurrentHashMap<K, V> - ing kene data ditampilake ing wangun segmen, dipérang dadi hashs tombol. Akibaté, akses data dikunci kanthi segmen, dudu siji obyek. Kajaba iku, iterator makili data kanggo irisan wektu tartamtu lan ora mbuwang ConcurrentModificationException .

ConcurrentNavigableMap<K,V> - ngluwihi antarmuka NavigableMap lan ngasilake ConcurrentNavigableMap . Kabeh iterator aman digunakake lan ora mbuwang ConcurrentModificationException .

ConcurrentSkipListMap<K, V> minangka analog saka TreeMap kanggo multithreading. Data diurutake miturut kunci lan rata-rata kinerja log(N) dijamin kanggocontainsKey,get,put,remove, lan operasi sing padha.

ConcurrentSkipListSet<E> minangka implementasi saka antarmuka Set adhedhasar ConcurrentSkipListMap .

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION