zoukankan      html  css  js  c++  java
  • CopyOnWrite容器

    CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。

    import java.util.Collection;
    import java.util.Map;
    import java.util.Set;
     
    public class CopyOnWriteMap<K, V> implements Map<K, V>, Cloneable {
        private volatile Map<K, V> internalMap;
     
        public CopyOnWriteMap() {
            internalMap = new HashMap<K, V>();
        }
     
        public V put(K key, V value) {
     
            synchronized (this) {
                Map<K, V> newMap = new HashMap<K, V>(internalMap);
                V val = newMap.put(key, value);
                internalMap = newMap;
                return val;
            }
        }
     
        public V get(Object key) {
            return internalMap.get(key);
        }
     
        public void putAll(Map<? extends K, ? extends V> newData) {
            synchronized (this) {
                Map<K, V> newMap = new HashMap<K, V>(internalMap);
                newMap.putAll(newData);
                internalMap = newMap;
            }
        }
    }

  • 相关阅读:
    Android MediaRecorder实现暂停断点录音功能
    Sqlite 数据库分页查询(ListView分页显示数据)
    Android 一键直接查看Sqlite数据库数据
    Android setTag()/getTag()
    sqlite3常用命令&语法
    Android 编辑框插入表情图片
    奇怪++操作
    hdu5024(dp)
    Windows Azure VM两shut down 道路
    android简单的计算器
  • 原文地址:https://www.cnblogs.com/hyp5490-/p/6376745.html
Copyright © 2011-2022 走看看