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);}
        }
    }
    
  • 相关阅读:
    洛谷——P1141 01迷宫
    洛谷——P1781 宇宙总统
    洛谷——P1608 路径统计
    洛谷——P1144 最短路计数
    洛谷—— P1162 填涂颜色
    python(22)- 递归和函数式编程
    android驱动例子(LED灯控制)
    Android之SDK、NDK、JNI和so文件
    NDK 与 JNI 的关系
    Android之NDK开发
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284612.html
Copyright © 2011-2022 走看看