zoukankan      html  css  js  c++  java
  • java中线程安全的集合

    一、CopyOnWriteArrayList

    迭代的同时进行修改会发生ConcurrentModificationException异常,推荐使用CopyOnWriteArrayList

    List<RtuTagAct> rtuTagActList = entry.getValue();
    for (RtuTagAct rtuTagAct:rtuTagActList) {
         if (rtuTagAct.getTagKey().equals(pushKey)) {
             rtuTagActList.remove(rtuTagAct);
                    }
                }

    下面是修改后的实现

    List<RtuTagAct> rtuTagActList0 = entry.getValue();
    List<RtuTagAct> rtuTagActList = new CopyOnWriteArrayList<>(rtuTagActList0);
    for (RtuTagAct rtuTagAct:rtuTagActList) {
        if (rtuTagAct.getTagKey().equals(pushKey)) {
            rtuTagActList.remove(rtuTagAct);
                    }
                }

    二、ConcurrentHashMap

    并发时修改Map,推荐使用ConcurrentHashMap,不然可能发生不可预料的后果

    比如如下实现,算出的数据根本就是错误的

    Map<String, Double> result = new HashMap<>();
    atIdList.forEach(meterId -> {
                Double now = rtValueMap.get(meterId); 
                Double node = hiveRTValueMap.get(meterId);
                double todayValue = ArithUtils.sub(now, node);
                 result.put(meterId, todayValue);  
                }
            });

    采用如下修改后的代码,果然就没问题了

    Map<String, Double> result = new ConcurrentHashMap<>();
    atIdList.forEach(meterId -> {
                Double now = rtValueMap.get(meterId); 
                Double node = hiveRTValueMap.get(meterId);
                double todayValue = ArithUtils.sub(now, node);
                 result.put(meterId, todayValue);  
                }
            });

    三、 其他

    interfacenon-thread-safethread-safe
    List ArrayList CopyOnWriteArrayList
    Map HashMap ConcurrentHashMap
    Set HashSet / TreeSet CopyOnWriteArraySet
    Queue ArrayDeque / LinkedList ArrayBlockingQueue / LinkedBlockingQueue
    Deque ArrayDeque / LinkedList LinkedBlockingDeque
  • 相关阅读:
    Python的浅拷贝与深拷贝
    Python:正则表达式的一些例子
    Python的垃圾回收机制
    http和https的区别与联系
    python数据结构之动态数组
    Python:fromkeys()方法
    Python:zip()函数
    算法概念
    Python面向对象:获取对象信息
    Dubbo Configuration
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/14781592.html
Copyright © 2011-2022 走看看