zoukankan      html  css  js  c++  java
  • Collections.synchronized***系列源码分析

    简介

    Collections类包含一些集合的静态工具方法,包含集合的包装类,包装类能返回指定集合支持的安全集合。

    synchronizedMap

    public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
        returnnew SynchronizedMap<>(m);
    }
    // 实现Map 为了实现里面的方法 这点让它能拥有HashMap的功能
    private static class SynchronizedMap<K,V> implements Map<K,V>, Serializable {
        private static final long serialVersionUID = 1978198479659022715L;
    
        private final Map<K,V> m;     // 桶
        final Object      mutex;      // 并发访问的锁对象
    
        SynchronizedMap(Map<K,V> m) {
            this.m = Objects.requireNonNull(m);
            mutex = this; // 默认当前对象作为锁对象
        }
    
        SynchronizedMap(Map<K,V> m, Object mutex) {
            this.m = m;
            this.mutex = mutex; // 也可自定也锁对象
        }
    	// 下面是map里方法 加了锁确保并发安全
        public int size() {
            synchronized (mutex) {return m.size();}
        }
        public boolean isEmpty() {
            synchronized (mutex) {return m.isEmpty();}
        }
        public boolean containsKey(Object key) {
            synchronized (mutex) {return m.containsKey(key);}
        }
        public boolean containsValue(Object value) {
            synchronized (mutex) {return m.containsValue(value);}
        }
        public V get(Object key) {
            synchronized (mutex) {return m.get(key);}
        }
    }
    
  • 相关阅读:
    SCCM2012分发脚本
    MPIO配置
    创建快捷方式,修改注册表
    常用口语 一
    3463工厂频道预置方法
    xargs 主要用于不支持管道的shell命令*****
    RDA DEBUG
    linux shell 实例1
    MSD3458开发资料
    MSD6A628开发资料与技术支持
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284612.html
Copyright © 2011-2022 走看看