Fast-fail机制
Fast-fail机制:在使用迭代器的过程中如果HashMap被修改,那么ConcurrentModificationException将被抛出;
实现原理:迭代器创建时绑定某个版本,每次迭代都会比较当前版本与绑定的版本,如果不一致则抛出ConcurrentModificationException。HashMap被修改时版本号会被更新,如下图所示:
线程不安全
本质:数组是共享的,当多个线程同时执行扩容操作时,可能造成死循环,详细说明查看:http://www.jasongj.com/java/concurrenthashmap/。
JDK1.8改进
- 不需要重新计算哈希;
- 扩容时链表顺序保持不变;
参考:http://www.jasongj.com/java/concurrenthashmap/