arraylist线程安全吗_java集合----超详细图解(ArrayList线程安全解决三种解决方法!)...
(注意:多線程情況下的判斷,如果你能確定就兩個線程(不包括main主線程或者是說GC),判斷可以用if,但如果是多個線程則用while,否則會出現錯誤)ArrayList線程安全的幾個問題解決(Hash Set、HashMap同等):
arraylist不是線程安全的他的add方法沒有synchronized同步鎖控制,要想實現一個線程安全的集合可以有以下三種方案:1、使用Vector,它是jdk1.1出現的,add方法有同步鎖,能保證線程安全2、使用Collections.synchronziedList(new ArrayLIst<>());
List<String> k=Collections.synchronizedList(new ArrayList<>());3、使用CopyOnWriteArrayList
List<String> k=new CopyOnWriteArrayList<>();
HashSet的底層結構就是HashMap
實現Map 集合的線程安全,用ConcurrentHashMap<>()
說明一點:
并發環境下的HashMap不安全,多線程put后可能導致get無限循環,比較明顯的線程不安全的問題是HashMap的get操作可能因為resize而引起死循環(cpu100%),還有一個就是put數據丟失,為了保證多線程下的HashMap安全可以用以下兩種方式:
一、使用java.util.concurrent.ConturrentHashMap包下的ConcurrentHashMap實現更高級的線程安全
二、使用synchronizedMap()同步方法包裝HashMap object,得到安全的map
總結
以上是生活随笔為你收集整理的arraylist线程安全吗_java集合----超详细图解(ArrayList线程安全解决三种解决方法!)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中简述对象和类的关系_Pyt
- 下一篇: python怎么实现检验_python