JUC--ConcurrentHashMap

HashMap HashTable安全

HashTable鎖住整個表  會存在複合操做上的問題「若不存則添加」 「若存在則刪除」 也是不安全的  效率低併發

 

ConcurrentHashMap:採用鎖分段機制  併發級別:concurrentLevel併發級別 默認16  ide

  支持多個thread同事訪問一個hashmap 而且線程安全spa

jdk1.8 將鎖分段改爲CAS線程

ConcurrentSkipListMap一般優於同步的TreeMapcode

當指望的讀書和遍歷遠遠大於列表的更新數時,CoprOnWriteArrayList優於同步的ArrayListblog

 

 

CopyOnWriteArrayList:在迭代的同時 向list中添加數據 發生併發修改該異常ConcurrentModificationExceptionip

public class TestCOAL {
    public static void main(String[] args) {
        for(int i=0;i<10;i++){
            new Thread(new HelloThread()).start();
        }
    }
}
class HelloThread implements  Runnable{
    private static List<String> list =Collections.synchronizedList(new ArrayList<>());
    static {
        list.add("AA");
        list.add("BB");
        list.add("CC");
    }
    @Override
    public void run() {
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
            list.add("AA");
        }
    }
}

使用CopyOnWriteArrayList可以解決以上問題:寫入並複製同步

 

private static List<String> list =new CopyOnWriteArrayList<>();

CopyOnWriteArrayList進行添加操做多的時候 效率低,每次都要複製  當進行併發迭代操做多時能夠選擇。hash

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息