java.util.concurrent.CopyOnWriteArrayList
2016-04-04 14:14
666 查看
import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.CopyOnWriteArrayList; public class TestCalc { /** *read */ private static class ReadTask implements Runnable { List<String> list; public ReadTask(List<String> list) { this.list = list; } public void run() { for (String str : list) { System.out.println(str); } } } /** *write * */ private static class WriteTask implements Runnable { List<String> list; int index; public WriteTask(List<String> list, int index) { this.list = list; this.index = index; } public void run() { list.remove(index); list.add(index, "write_" + index); } } public void run() { final int NUM = 10; //List<String> list = new ArrayList<String>(); //java.util.ConcurrentModificationException CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>(); for (int i = 0; i < NUM; i++) { list.add("main_" + i); } ExecutorService executorService = Executors.newFixedThreadPool(NUM); for (int i = 0; i < NUM; i++) { executorService.execute(new ReadTask(list)); executorService.execute(new WriteTask(list, i)); } executorService.shutdown(); } public static void main(String[] args) { new TestCalc().run(); } } /* //List<String> list = new ArrayList<String>(); Exception in thread "pool-1-thread-11" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Unknown Source) at java.util.ArrayList$Itr.next(Unknown Source) at TestCalc$ReadTask.run(TestCalc.java:19) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) */
相关文章推荐
- Java实现几种常见排序方法
- java根据ip地址获取详细地域信息
- JVM优化配置
- 一天一个Java基础——序列化
- java版复利计算
- Java对象的引用方式(强引用, 软引用, 弱引用, 虚引用)
- java 设计模式------1、策略模式
- java虚拟机学习之内存管理
- JDK7 提供了 7 个阻塞队列
- Java并发编程系列之十三:生产者-消费者模式
- javabean总结
- 学习javaEE每一天2016.4.3
- Spring mvc 配置详解
- Spring MVC 知识点集合
- Java集合框架里ArrayList Vector和LinkedList的区别
- MyEclipse设置自动提示
- Java复习笔记---小随笔---匿名内部类
- java多线程学习(二)
- java集合:ArrayList,Vector, LinkedList的存储性能和特性
- SpringMVC集成Hessian