ava.util.ConcurrentModificationException 异常
来源:互联网 发布:标准曲线计算软件 编辑:程序博客网 时间:2024/05/20 14:20
<span style="line-height: 1.875; white-space: pre-wrap; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">问题场景</span>
jdk1.7:
多线程下使用Collection.sort() OK
切换到jdk1.8 的时候,出现 java.util.ConcurrentModificationException异常
解决办法:查看jdk1.7Collection的源码:
public static <T extends Comparable<? super T>> void sort(List<T> list) { Object[] a = list.toArray(); Arrays.sort(a); ListIterator<T> i = list.listIterator(); for (int j=0; j<a.length; j++) { i.next(); i.set((T)a[j]); }}
jdk1.8版本:
Collections.sort()
public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null); }
@SuppressWarnings({"unchecked", "rawtypes"}) default void sort(Comparator<? super E> c) { Object[] a = this.toArray(); Arrays.sort(a, (Comparator) c); ListIterator<E> i = this.listIterator(); for (Object e : a) { i.next(); i.set((E) e); } }
我使用的list类型为ArrayList,查看ArrayList的sort源码:
@Override @SuppressWarnings("unchecked") public void sort(Comparator<? super E> c) { final int expectedModCount = modCount; Arrays.sort((E[]) elementData, 0, size, c); if (modCount != expectedModCount) { throw new ConcurrentModificationException(); } modCount++; }
抛出异常的情况就是并发情况下,第一个集合sort之后,modcount++ 值发生变化了,第二个线程进来对比就抛异常(sort线程不安全)
0 0
- ava.util.ConcurrentModificationException 异常
- 异常:java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException 异常
- 异常:java.util.ConcurrentModificationException
- 异常:java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException 异常
- java.util.ConcurrentModificationException 异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- 部分和(partial sum)在算法求解中的作用
- react native 环境搭建
- format not a string literal and no format arguments [-Werror=format-security]
- oracle中的SAVEPOINT和ROLLBACK TO SAVEPOINT语法解析
- 正则表达式
- ava.util.ConcurrentModificationException 异常
- Mesh Algorithm in OpenCascade
- Java Web学习总结(27)——JavaEE中Web服务器、Web容器、Application服务器区别及联系
- SVN管理工具Cornerstone之:Check Out
- Centos配置网卡篇
- NPOI EXCEL创建
- 高性能网络编程(4)--TCP连接的关闭 (B)
- 使用screen避免远程连接异常中断
- Latex排版全解