大白话之fail-fast | fail-safe:为什么会有这个机制?它有什么作用?
前言 阅读本篇文章,你需要了解下列知识: 多线程的实现(看过来) Iterator的使用 ArrayList的使用和如何实现Iterator 为什么会有这个机制? 举个栗子 有一杯水、两个人(黄渤和红雷) 黄渤拿起了水杯,开始喝水 红雷到达案发现场,想抢走水杯喝水 黄渤很生气,并锤了红雷一顿 映射关系 将上面的栗子翻译一下: 有一个ArrayList、两个线程(Thread1和Thread2) Thread1请求并开始使用Iterator遍历ArrayList Thread2随后紧跟请求对ArrayList进行修改 由于Thread1正在遍历ArrayList,ArrayList对Thread2扔出ConcurrentModificationException 继承关系 Tip 如果下面的知识让你难以搞懂,可以直接跳过,在深入学习接口和继承后,再回来看一遍。 看起来有些困难?没关系。 ArrayList继承了Iterable接口,实现了基于Iterator的遍历功能。 ArrayList实现Iterator的部分源码如下: /** * An optimized ver....