黑马程序员技术交流社区

标题: 同步容器与只读控制 [打印本页]

作者: F灬灬    时间: 2015-8-28 18:16
标题: 同步容器与只读控制
一:同步控制:多线程并发访问集合的线程安全
     
                   java.lang.UnsupportedOperationException操作异常

常用容器 ArrayList HashSet HashMap 等都是线程不安全的
Collections提供了synchronizedXxx()方法,将指定容器包装成同步
synchronizedList()
synchronizedSet()
synchronizedMap()
具体代码:
               List<String> list = new ArrayList<String>();
                   list.add( "a");
                   list.add( "b");
                    //list可以同步
                   List<String> synList = Collections.synchronizedList(list);
                   System. out.println( "线程安全的list制作完毕" );
二:不可变设置:"只读"访问,Collections提供了三种方法
emptyXxx()空的不可变的集合
          public static Set<String> oper(Set<String> set){
                              //操作
                              if( null==set){
                                       return Collections.EMPTY_SET;//外部获取避免NullPointException
                             }
                              return set;
                   }
singletonXxx一个元素不可变的集合
               List<String> list = Collections.singletonList(new String());
                   list.add( "test");
                    //list.add("bjsxt ");//只能包含一个元素的容器
unmodifiableXxx不可变容器
Map<String,String>map = new HashMap<String,String>();
                   map.put( "test", "test");
                   map.put( "bjsxt","bjsxt" );
                    //只读控制
                   Map<String,String>map2 = Collections. unmodifiableMap(map);
           //      map2.put("a","a");//不能操作
                   System. out.println(map2.size());





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2