CopyOnWriteArrayList解读源码:
待续
demo:
public class Write implements java.lang.Runnable{
java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList;
public Write(java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList){
this.copyOnWriteArrayList = copyOnWriteArrayList;
}
public void run(){
this.copyOnWriteArrayList.add(2);
}
}
public class Read implements java.lang.Runnable{
java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList;
public Read(java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList){
this.copyOnWriteArrayList = copyOnWriteArrayList;
}
public void run(){
for(int i=0;i<this.copyOnWriteArrayList.size();i++){
System.out.println(this.copyOnWriteArrayList.get(i));
}
}
}
public static void main(String[] args) throws ParseException {
java.util.concurrent.CopyOnWriteArrayList<Integer> copyOnWriteArrayList = new java.util.concurrent.CopyOnWriteArrayList<Integer>();
copyOnWriteArrayList.add(3);
java.util.concurrent.ExecutorService executorService = java.util.concurrent.Executors.newFixedThreadPool(15);
executorService.execute(new test().new Read(copyOnWriteArrayList));
executorService.execute(new test().new Read(copyOnWriteArrayList));
executorService.execute(new test().new Write(copyOnWriteArrayList));
executorService.execute(new test().new Write(copyOnWriteArrayList));
executorService.execute(new test().new Write(copyOnWriteArrayList));
executorService.execute(new test().new Write(copyOnWriteArrayList));
executorService.execute(new test().new Write(copyOnWriteArrayList));
executorService.execute(new test().new Read(copyOnWriteArrayList));