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

  • 相关阅读:
    Liquid模板语言参考文档
    Shopify主题title/description等SEO设置
    23个Shopify免费模板值得拥有
    navicate 激活
    idea 内存溢出
    mysql for update 使用说明
    quartz-SimpleSemaphore
    达梦数据库冷备份还原的简单记录
    Beyond Compare 的比较以及导出的简单设置方法
    PG13 离线安装的简单办法
  • 原文地址:https://www.cnblogs.com/zhy-study/p/9398836.html
Copyright © 2011-2022 走看看