1、多线程方式发生异常举例
1.1、java代码如下:
1 | final List<String> myList = createTestData(); |
1.2、异常信息打印如下:
1 | 遍历集合 value = 1 |
当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。说明以上办法在同一个线程执行的时候是没问题的,但是在异步情况下依然可能出现异常。
2、解决办法
2.1、采用以下代码,将不会出现之前的异常
1 | final List<String> myList = new CopyOnWriteArrayList<String>(); |
2.2、输出结果
1 | 遍历集合 value = 1 |
3、相关总结
1、使用Collections.synchornizedXxx方法,获得线程安全对象
2、使用java.util.concurrent/java.util.concurrent.atomic并发编程对象开发
另附java中线程安全的类:HashTable、Vector、Stack、StringBuffer等