Java 執行緒安全的Map的實現方式3種

2021-09-01 05:38:25 字數 379 閱讀 8912

1. hashmap,treemap 未進行同步考慮,是執行緒不安全的。

2. hashtable 和 concurrenthashmap 都是執行緒安全的。區別在於他們對加鎖的範圍不同,hashtable 對整張hash表進行加鎖,而concurrenthashmap將hash表分為16桶(segment),每次只對需要的桶進行加鎖。

3. collections 類提供了synchronized***()方法,可以將指定的集合包裝成執行緒同步的集合。比如,

list  list = collections.synchronizedlist(new arraylist());

set  set = collections.synchronizedset(new hashset());

Java中的執行緒安全

執行緒安全問題之所以存在,本質原因是 當多個執行緒訪問同乙個資料的時候,可能引起衝突。而且這些執行緒中至少有乙個執行緒會改寫這個資料時才會出現衝突,如果所有執行緒都唯讀不改寫,則不會衝突。由於這個資料不只被乙個執行緒訪問,我們稱這個資料為共享資料。類中一般會出現三種資料 靜態成員變數 普通成員變數 ...

Map的執行緒安全與否的相關文章

size medium 為什麼hashmap不是執行緒安全的?不安全?不安全產生什麼後果?請看 url 集 弱引用,執行緒安全,高併發效能,非同步超時清理,自定義構建元素等功能的map google collections中強大的concurrent mapmaker url concurrenth...

JAVA執行緒安全

執行緒安全就是說多執行緒訪問同一 不會產生不確定的結果。編寫執行緒安全的 是依靠執行緒同步。在多執行緒環境中,當各執行緒不共享資料的時候,那麼一定是執行緒安全的。問題是這種情況並不多見,在多數情況下需要共享資料,這時就需要進行適當的同步控制了。執行緒安全一般都涉及到synchronized 就是一段...