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());
      }
    不然会导致无法确定的行为。
  • 相关阅读:
    原创frame-relay配置
    iptables详解和练习
    nfs-rpcbind-portmap挂载nfs-network file system
    linux-user-group添加与删除
    cgi-fastcgi-fpm
    lamp介绍
    子签CA以及给别人发CA
    正则表达式
    字符集和字符编码
    C++11新特性
  • 原文地址:https://www.cnblogs.com/LIUWEI123/p/7966115.html
Copyright © 2011-2022 走看看