synchronizedList与会抛出ConcurrentModificationException

来源:互联网 发布:三坐标测量机编程 编辑:程序博客网 时间:2024/06/10 01:20
package synchronizedList;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class ConcurrentModificationException {public static void main(String[] args) {List<Long> list = Collections.synchronizedList(new ArrayList<Long>());for(int i=0;i<1000;i++){list.add((long) i);}Thread t = new Thread(new Delete(list));t.start();for (Long w : list) {System.out.println(w);}}}class Delete implements Runnable{private List<Long> list;public Delete(List<Long> list) {this.list = list;}@Overridepublic void run() {for (int i = 0; i < list.size(); i++) {list.remove(i);}}}


这是我自己构造的代码,拿到你的eclipse里面运行下,就会抛出java.util.ConcurrentModificationException 异常.


原因很简单, 2个线程都没有独占锁,主线程在读,子线程在修改,所以抛异常了

0 0
原创粉丝点击