並發集合

開放

CopyOnWriteArrayList

對給定集合的addsetremove操作會導致創建內部數組的新副本。這確保我們不會捕獲ConcurrentModificationException

請記住,在復制數組時,只會復制對對象的引用,包括對非線程安全元素字段的訪問。此類集合最適用於寫入操作最少的情況。

CopyOnWriteArrayList<E>是ArrayList 的線程安全模擬,基於 CopyOnWrite 算法實現。其他方法和構造函數如下所述:

CopyOnWriteArrayList(E[] toCopyIn) 將數組作為輸入的構造函數。
int indexOf(E e, int index) 返回找到的第一個元素的索引,從給定索引開始。
int lastIndexOf(E e, int 索引) 返回在反向搜索中找到的第一個元素的索引,從給定索引開始。
布爾 addIfAbsent(E e) 如果元素不在集合中,則添加一個元素。equals方法用於比較元素。
int addAllAbsent(Collection<? extends E> c) 如果元素不在集合中,則添加元素。返回添加的元素數。

ConcurrentMap 接口

改進了HashMapTreeMap的實現,支持多線程和可擴展性。

ConcurrentMap<K, V>是一個通過附加原子操作擴展Map 的接口。

V putIfAbsent(K 鍵, V 值) 僅當鍵不在集合中時才添加新的鍵值對。返回給定鍵的先前值。
布爾刪除(對象鍵,對象值) 僅當給定鍵與 Map 中的給定值匹配時才刪除鍵值對。如果元素已成功刪除,則返回 true。
布爾替換(K 鍵,V 舊值,V 新值) 僅當舊值與 Map 中的給定值匹配時,才通過鍵將舊值替換為新值。如果該值已被新值替換,則返回 true。
V 替換(K 鍵,V 值) 僅當鍵與任何值相關聯時,才通過鍵將舊值替換為新值。返回給定鍵的先前值。

ConcurrentHashMap<K, V> - 此處數據以分段的形式呈現,分段分為鍵哈希。結果,如果您需要訪問,則段被鎖定,而不是對象。迭代器不會拋出ConcurrentModificationException並表示特定時間段內的數據。

ConcurrentHashMap 的實現

ConcurrentHashMap<K, V> - 此處數據以段的形式呈現,按鍵哈希分解。結果,數據訪問被段鎖定,而不是被一個對象鎖定。此外,迭代器表示特定時間片的數據並且不會拋出ConcurrentModificationException

ConcurrentNavigableMap<K,V> - 擴展NavigableMap接口並返回一個 ConcurrentNavigableMap。所有迭代器都可以安全使用,不會拋出ConcurrentModificationException

ConcurrentSkipListMap<K, V>是用於多線程的TreeMap 的模擬。數據按鍵排序,並保證containsKeygetputremove和其他類似操作的平均 log(N) 性能。

ConcurrentSkipListSet<E>是基於ConcurrentSkipListMap的Set接口的實現。

1
任務
Module 3 a ɛto so abien,  等級 19課堂 2
上鎖
10 plus 20 equals 20
task4203
1
任務
Module 3 a ɛto so abien,  等級 19課堂 2
上鎖
Thread-unsafe Map
task4204
留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言