由于HashMap(ArrayList)并不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改了map(这里的修改是指结构上的修改删除或者,并非指单纯修改集合内容的元素),那么将要抛ConcurrentModificationException 即为fail-fast策略
主要通过modCount域来实现,保证线程之间的可见性,modCount即为修改次数,对于HashMap(ArrayList)内容的修改就会增加这个值, 那么在迭代器的初始化过程中就会将这个值赋值给迭代器的expectedModCount
但是fail-fast行为并不能保证,因此依赖于此异常的程序的做法是错误的
Fail-Fast机制
最新推荐文章于 2024-08-15 07:30:00 发布