zoukankan      html  css  js  c++  java
  • JUC--ConcurrentHashMap

    HashMap HashTable

    HashTable锁住整个表  会存在复合操作上的问题“若不存则添加” “若存在则删除” 也是不安全的  效率低

     

    ConcurrentHashMap:采用锁分段机制  并发级别:concurrentLevel并发级别 默认16  

      支持多个thread同事访问一个hashmap 并且线程安全

    jdk1.8 将锁分段改成CAS

    ConcurrentSkipListMap通常优于同步的TreeMap

    当期望的读书和遍历远远大于列表的更新数时,CoprOnWriteArrayList优于同步的ArrayList

    CopyOnWriteArrayList:在迭代的同时 向list中添加数据 发生并发修改该异常ConcurrentModificationException

    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进行添加操作多的时候 效率低,每次都要复制  当进行并发迭代操作多时可以选择。

  • 相关阅读:
    第04组 beta冲刺(1/4)
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    第04组 Alpha事后诸葛亮
    C Primer 复习题
    C Primer 编程练习
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    Appium + java截图方法
  • 原文地址:https://www.cnblogs.com/zhy-study/p/9398836.html
Copyright © 2011-2022 走看看