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

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

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

用synchronized、CopyOnWriteArrayList

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

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

相关推荐
CoderCodingNo3 小时前
【GESP】C++五级考试大纲知识点梳理, (3-4) 链表-双向循环链表
开发语言·c++·链表
whltaoin3 小时前
AI 超级智能体全栈项目阶段五:RAG 四大流程详解、最佳实践与调优(基于 Spring AI 实现)
java·人工智能·spring·rag·springai
junnhwan3 小时前
【苍穹外卖笔记】Day05--Redis入门与店铺营业状态设置
java·数据库·redis·笔记·后端·苍穹外卖
llz_1123 小时前
第五周作业(JavaScript)
开发语言·前端·javascript
摇滚侠3 小时前
Spring Boot 3零基础教程,Spring Boot 特性介绍,笔记02
java·spring boot·笔记
W.Y.B.G4 小时前
JavaScript 计算闰年方法
开发语言·前端·javascript
Excuse_lighttime4 小时前
只出现一次的数字(位运算算法)
java·数据结构·算法·leetcode·eclipse
liu****4 小时前
笔试强训(二)
开发语言·数据结构·c++·算法·哈希算法
渣哥4 小时前
你以为只是名字不同?Spring 三大注解的真正差别曝光
javascript·后端·面试