zoukankan      html  css  js  c++  java
  • CopyOnWriteArrayList 写时复制思想

    写时复制

    conpyOnWrite容器即写时复制容器.往一个容器添加元素的时候,不直接往当前容器Object[]添加,而是先将当前容器Object[]进行Copy,复制出一个新的容器Object[] newElements, 然后往新的容器newElements里添加元素, 添加完元素后,再讲元容器的引用指向新的容器 setArray(newElements). 这样做的好处是可以对copyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素.所以copyOnWrite也是一种读写分离的思想,读和写不同的容器.

     1  public boolean add(E e) {
     2         final ReentrantLock lock = this.lock;
     3         lock.lock();
     4         try {
     5             Object[] elements = getArray();
     6             int len = elements.length;
     7             Object[] newElements = Arrays.copyOf(elements, len + 1);
     8             newElements[len] = e;
     9             setArray(newElements);
    10             return true;
    11         } finally {
    12             lock.unlock();
    13         }
    14     }
  • 相关阅读:
    运维ipvsadm配置负载均衡
    vue--存储
    vue--v-model表单控件绑定
    CSS--外发光与内阴影
    vue运行报错--preventDefault
    vue运行报错--dependency
    vue--移动端兼容问题
    vue--生命周期
    vue--vuex
    Vue--vux组件库
  • 原文地址:https://www.cnblogs.com/max-home/p/12722347.html
Copyright © 2011-2022 走看看