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