zoukankan      html  css  js  c++  java
  • 新整理CopyOnWriteArrayList

    下面举一个发生ConcurrentModificationException异常的例子: 示例1: List list = new ArrayList(); for(Iterator iter = list.iterator(); iter.hasNext();) { Object obj = iter.next(); ... if(***) { list.remove(obj); } } 在执行了remove方法之后,再去执行循环,iter.next()的时候,报java.util.ConcurrentModificationException(当然,如果remove的是最后一条,就不会再去执行next()操作了) 在这种情况下,CopyOnWriteArrayList就排上用场了,CopyOnWriteArrayList是ArrayList的一个线程安全的变体,即可在并发中使用。而它的可变操作都是通过对ArrayList中存储的数组通过一次新的复制来实现的。换用CopyOnWriteArrayList实现,可以避免这种情况的发生: 示例2: List list = new CopyOnWriteArrayList(); for(Iterator iter = list.iterator(); iter.hasNext();) { Object obj = iter.next(); ... if(***) { list.remove(obj); } } CopyOnWriteArrayList适用于访问操作远多于修改操作的情况。

  • 相关阅读:
    poj 2942 Knights of the Round Table 双连通分量
    zoj 2588 Burning Bridges 桥
    desin pattern
    android
    ubuntu
    centos
    android布局
    gradle
    好站
    tomcat datasource
  • 原文地址:https://www.cnblogs.com/clunyes/p/3003422.html
Copyright © 2011-2022 走看看