CodeGym/Kurso sa Java/Modyul 3/Mga Kasabay na Koleksyon

Mga Kasabay na Koleksyon

Available

CopyOnWriteArrayList

Ang add , set , remove operations sa isang ibinigay na koleksyon ay nagreresulta sa isang bagong kopya ng panloob na array na ginagawa. Tinitiyak nito na hindi namin mahuli ang ConcurrentModificationException .

Tandaan lamang na kapag kumukopya ng array, ang mga sanggunian lamang sa mga bagay ang kinokopya, kabilang ang pag-access sa mga field ng mga elementong hindi ligtas sa thread. Ang ganitong mga koleksyon ay pinakamahusay na ginagamit sa mga kaso na may isang minimum na bilang ng mga operasyon sa pagsulat.

Ang CopyOnWriteArrayList<E> ay isang thread-safe na analogue ng ArrayList , na ipinatupad batay sa mga algorithm ng CopyOnWrite. Ang mga karagdagang pamamaraan at tagabuo ay inilarawan sa ibaba:

CopyOnWriteArrayList(E[] toCopyIn) Isang constructor na kumukuha ng array bilang input.
int indexOf(E e, int index) Ibinabalik ang index ng unang elementong natagpuan, simula sa ibinigay na index.
int lastIndexOf(E e, int index) Ibinabalik ang index ng unang elemento na natagpuan sa isang reverse search, simula sa ibinigay na index.
boolean addIfAbsent(E e) Magdagdag ng elemento kung wala ito sa koleksyon. Ang equals method ay ginagamit upang ihambing ang mga elemento .
int addAllAbsent(Collection<? extends E> c) Magdagdag ng mga elemento kung wala sila sa koleksyon. Ibinabalik ang bilang ng mga elementong idinagdag.

Interface ng ConcurrentMap

Mga pinahusay na pagpapatupad ng HashMap at TreeMap na may suporta para sa multithreading at scalability.

Ang ConcurrentMap<K, V> ay isang interface na nagpapalawak ng Map na may mga karagdagang atomic operations.

V putIfAbsent(K key, V value) Nagdaragdag lang ng bagong key-value pair kung wala sa koleksyon ang key. Ibinabalik ang dating value para sa ibinigay na key.
boolean remove(Object key, Object value) Aalisin lang ang key-value pair kung ang ibinigay na key ay tumugma sa ibinigay na value sa Map. Nagbabalik ng true kung matagumpay na naalis ang elemento.
boolean replace(K key, V oldValue, V newValue) Papalitan ang lumang halaga ng bago sa pamamagitan ng key lamang kung ang lumang halaga ay tumutugma sa ibinigay na halaga sa Map. Nagbabalik ng true kung ang halaga ay napalitan ng bago.
V palitan(K key, V value) Pinapalitan ang isang lumang halaga ng bago sa pamamagitan ng key lamang kung ang susi ay nauugnay sa anumang halaga. Ibinabalik ang dating value para sa ibinigay na key.

ConcurrentHashMap<K, V> - dito ang data ay ipinakita sa anyo ng mga segment, na nahahati sa mga pangunahing hash. Bilang resulta, kung kailangan mo ng access, naka-lock ang segment, hindi ang object. Ang mga iterator ay hindi nagtatapon ng ConcurrentModificationException at kumakatawan sa data para sa isang partikular na tagal ng panahon.

Pagpapatupad ng ConcurrentHashMap

ConcurrentHashMap<K, V> - dito ang data ay ipinakita sa anyo ng mga segment, na pinaghiwa-hiwalay ng mga pangunahing hash. Bilang resulta, ang pag-access ng data ay naka-lock ng mga segment, hindi ng isang bagay. Bilang karagdagan, ang mga iterator ay kumakatawan sa data para sa isang partikular na bahagi ng oras at hindi nagtatapon ng ConcurrentModificationException .

ConcurrentNavigableMap<K,V> - pinalawak ang interface ng NavigableMap at nagbabalik ng ConcurrentNavigableMap . Ang lahat ng mga iterator ay ligtas na gamitin at hindi magtapon ng ConcurrentModificationException .

Ang ConcurrentSkipListMap<K, V> ay isang analogue ng TreeMap para sa multithreading. Ang data ay pinagsunod-sunod ayon sa key at ang average na log(N) na pagganap ay ginagarantiyahan para sacontainsKey,get,put,remove, at iba pang katulad na operasyon.

Ang ConcurrentSkipListSet<E> ay isang pagpapatupad ng Set interface batay sa ConcurrentSkipListMap .

1
Gawain
Modyul 3,  antasaralin
Naka-lock
10 plus 20 equals 20
task4203
1
Gawain
Modyul 3,  antasaralin
Naka-lock
Thread-unsafe Map
task4204
Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito