Java的简单理解(20)---容器的同步控制和只读

Java
1.容器的同步控制: 多线程并发访问集合的线程安全
  • 常用容器ArrayList HashSet HashMap等都是线程不安全的
  • Collections提供了synchronizedXxx()方法,将指定容器包装成同步
    • synchronizedList
    • synchronizedSet
    • synchronizedMap
public void test1() {
       List<String> list = new ArrayList<>();
       list.add("a");
       list.add("b");

       // 可以同步
       List<String> list1 = Collections.synchronizedList(list);
   }
2.不可变设置:"只读访问",Collections提供了三种方法
  • emptyXxx() 空的不可变的集合
  • singletonXxx() 一个元素不可变的集合
  • unmodifiableXxx() 不可修改的容器
    public void test1() {
        Map<String,String> map = new HashMap<>();
        map.put("a","a");
        map.put("b","b");
        // 只允许读
        Map<String,String> map1 = Collections.unmodifiableMap(map);
    }
public static Set<String> oper(Set<String> set) {

     if (set == null) {
         return Collections.EMPTY_SET; // 外部获取避免空对象
     }
     return set;
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,447评论 1 14
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 1,976评论 0 13
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,734评论 0 11
  • 工作计划 首先,完成本职工作。五月一日过后,税收政策发生很大改变,本周重点是学习并理解运用新政策,完成汇算清缴专题...
    liling91阅读 94评论 0 0