CopyOnWrite系列

写时复制,读的时候直接返回

它直接保证最终一致性,不能保证强一致性,所以使用时要注意

1.CopyOnWriteArrayList

        List<Integer> tempList = Arrays.asList(new Integer [] {1,2});
        CopyOnWriteArrayList<Integer> copyList = new CopyOnWriteArrayList<>(tempList);

2.CopyOnWriteMap(模仿编写)

package com.example.demo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @program: demo
 * @description
 * @author: dajitui
 * @create: 2018-06-18 13:46
 **/
public class CopyOnWriteMap<K,V> implements Cloneable,Map<K,V> {
    private volatile Map<K,V> map;

    public CopyOnWriteMap(){
        map=new HashMap<K,V>(100);
    }

    @Override
    public int size() {
        return 0;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @Override
    public boolean containsKey(Object key) {
        return false;
    }

    @Override
    public boolean containsValue(Object value) {
        return false;
    }

    @Override
    public V get(Object key) {
       return map.get(key);
    }

    @Override
    public V put(K key, V value) {
        synchronized (this){
            Map<K,V> m=new HashMap<K,V>(map);
            V val=m.put(key,value);
            map=m;
            return val;
        }
    }

    @Override
    public V remove(Object key) {
        return null;
    }

    @Override
    public void putAll(Map<? extends K, ? extends V> m) {
        synchronized (this){
            Map<K,V> m1=new HashMap<K,V>(map);
            m1.putAll(m);
            map=m1;
        }
    }

    @Override
    public void clear() {

    }

    @Override
    public Set<K> keySet() {
        return null;
    }

    @Override
    public Collection<V> values() {
        return null;
    }

    @Override
    public Set<Entry<K, V>> entrySet() {
        return null;
    }
}

友情链接https://blog.csdn.net/linsongbin1/article/details/54581787


https://blog.csdn.net/likailonghaha/article/details/53405895


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值