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);}
        }
    }
    
  • 相关阅读:
    基于opencv的摄像头的标定
    图像的角点简介
    周转时间和平均带权时间等
    QT各个版本的下载的地址
    参考文献格式
    sublime中的emmet插件的使用技巧
    sublime快捷键
    CSS布局居中
    Markdown 语法说明(简体中文版)
    sql作业题
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284612.html
Copyright © 2011-2022 走看看