java面试-0203-java集合并发修改异常、快速/安全失败原理、解决方法?

fail-fast:当多个线程对集合并发修改,或者遍历时修改结构(添加、删除、修改元素),迭代器抛出ConcurrentModificationException

集合使用modCount记录结构修改次数,迭代器遍历时将modCount赋值给expectedmodCount。如果遍历期间结构被修改,modCount会改变。每次调用hasNext()或next()时,迭代器检查到modCount不等于expectedmodCount时会抛出异常并终止遍历

用synchronized、CopyOnWriteArrayList

fail-safe,在复制的集合上进行遍历。~不会被迭代器检测到,所以迭代器不抛异常,如CopyOnWriteArrayList

迭代器不能访问到修改后的内容

相关推荐
3***68848 小时前
Spring Boot中使用Server-Sent Events (SSE) 实现实时数据推送教程
java·spring boot·后端
阿里嘎多学长8 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yuanyikangkang8 小时前
STM32 lin控制盒
开发语言
C***u1768 小时前
Spring Boot问题总结
java·spring boot·后端
Elieal8 小时前
5 种方式快速创建 SpringBoot 项目
java·spring boot·后端
better_liang9 小时前
每日Java面试场景题知识点之-Java修饰符
java·访问控制·static·abstract·final·修饰符·企业级开发
努力学算法的蒟蒻9 小时前
day58(1.9)——leetcode面试经典150
算法·leetcode·面试
txinyu的博客9 小时前
HTTP服务实现用户级窗口限流
开发语言·c++·分布式·网络协议·http
代码村新手9 小时前
C++-类和对象(上)
开发语言·c++