大家都知道,arrayList,linkedList都是线程不安全的,就是支持多线程的意思吧。
那为什么,我在遍历的同时,一对里面的元素做下修改,就会抛出java.util.ConcurrentModificationException,
求指教

解决方案 »

  1.   


    给个链接参考下
    http://www.javaeye.com/topic/124788
      

  2.   

    线程不安全的,就是支持多线程的意思吧。线程不安全!=支持多个线程同时访问。线程不安全的意思,是提醒用户该类同时可能被其他线程访问时会导致问题发生。Java中使用线程不安全的类,需要加synchronized来保证当多个线程同时访问而不发生问题。(这个视具体情况定。如果能保证不会同时访问,则不加同步也行)。明白?
      

  3.   

    在返回的列表上进行迭代时,用户必须手工在返回的列表上进行同步:   List list = Collections.synchronizedList(new ArrayList());
          ...
      synchronized(list) {
          Iterator i = list.iterator(); // Must be in synchronized block
          while (i.hasNext())
              foo(i.next());
      } 不遵从此建议将导致无法确定的行为。    
      

  4.   

     这是迭代的问题 和线程没有关系的吧 具体的可以查看迭代的jdk实现 我记得在迭代做循环的时候 每次都会检查集合中的元素是否被修改 如果被修改了 就会抛出该异常 即使是单线程 也不能在迭代过程中修改元素。
      

  5.   

    Iterator 遍历时,LinkedList被锁定。只能用Iterator 的方法对LinkedList操作。线程同步。