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());
      }
    不然会导致无法确定的行为。
  • 相关阅读:
    机器学习之朴素贝叶斯
    机器学习之KNN
    格式化数字
    web.xml中load-on-startup的作用
    ExecutorService线程池
    201404转成 2014.04
    DBCP连接池配置示例
    java 写文本换行
    打印IP 来源
    MySQL分库分表的一些技巧
  • 原文地址:https://www.cnblogs.com/LIUWEI123/p/7966115.html
Copyright © 2011-2022 走看看