不安全的集合類Map

2021-10-09 03:41:06 字數 614 閱讀 7381

示例**:

public class listdemo 

}).start();

}// 休眠等待執行緒跑完

thread.sleep(100);

// 輸出集合數量

system.out.println("map的數量為:"+map.size());}}

示例結果:

使用collections.synchronizedmap(newhashmap<>());hashmap轉換為安全的map

但是無論是讀取還是寫入,它都會進行加鎖,當我們併發級別特別高,執行緒之間在任何操作上都會進行等待,因此在某些場景中它不是最好的選擇。

concurrenthashmap 採用了分段鎖技術,其中 segment 繼承於 reentrantlock。不會像 hashtable 那樣不管是 put 還是 get 操作都需要做同步處理,理論上 concurrenthashmap 支援 currencylevel (segment 陣列數量)的執行緒併發。每當乙個執行緒占用鎖訪問乙個 segment 時,不會影響到其他的 segment。

不安全的集合類Set

小知識 hashset的底層是hashmap,拋棄了value只用了key 示例 public class listdemo start 休眠等待執行緒跑完 thread.sleep 100 輸出集合數量 system.out.println list的數量為 list.size 示例結果 使用co...

JUC 集合不安全類

juc arraylist底層是乙個陣列,預設大小10,超過就擴容,擴原值的一半10 5 15 執行緒不安全,因為add方法沒有加鎖。不安全案例 public class containernotsafedemo string.valueof i start 參考 add原始碼 public boo...

集合 HashMap的不安全

1.hashmap存在的問題 public static void main string args throws interruptedexception system.out.println t1 over thread t2 new thread system.out.println t2 o...