zoukankan      html  css  js  c++  java
  • 线程安全的集合操作类

    常见的操作接口有:Map,List,Set,Vector 其最常用的实现类有:HashMap,ArrayList,LinkedList,HashSet

    但是只有Vector是线程安全的,Collections实现了一个些方法可以保证常用的集合类达到线程安全:

    Map: Map<Object,Object> map =  Collections.synchronizedMap(new HashMap<>());

    java.util.concurrent包还提共了ConcurrentHashMap类:

    Map<Object, Object> map = new ConcurrentHashMap<>();

    Set:   Set<Object> set1 = Collections.synchronizedSet(new HashSet<>());

    List:  List<String> list = Collections.synchronizedList(new LinkedList<>());     

            List<String> list = Collections.synchronizedList(new ArrayList<>());

    注意 使用时必须在同步块中使用如:

    Set s = Collections.synchronizedSet(new HashSet());
          ...
      synchronized(s) {
          Iterator i = s.iterator(); // Must be in the synchronized block
          while (i.hasNext())
              foo(i.next());
      }
    不然会导致无法确定的行为。
  • 相关阅读:
    动态加载并执行Win32可执行程序
    二维码登录
    深度神经网络实现图像理解的原理
    NET Core Docker部署
    EventStore的设计思路
    NET Core,Ubuntu运行
    Tensorflow 神经网络
    System.Reflection.Emit学习
    泛型 "new的性能"
    蚁群算法
  • 原文地址:https://www.cnblogs.com/LIUWEI123/p/7966115.html
Copyright © 2011-2022 走看看