第4章 · 常用类库的坑地图 章节摘要:集合、字符串、日期、IO 是日常代码里出现频率最高的四块,也是坑密度最高的四块。本章四个事故:foreach 里删元素抛 ConcurrentModificationException;字符串循环拼接拖垮 GC;静态 SimpleDateFormat 在并发下产出错乱日期;BIO 线程模型被连接数打爆。 学习目标 解释 fail-fast 迭代器的 modCount 机制,掌握安全的边遍历边删除写法 说清 String 不可变与常量池,按场景选择 StringBuilder 或拼接策略 掌握 java.
章节摘要:集合、字符串、日期、IO 是日常代码里出现频率最高的四块,也是坑密度最高的四块。本章四个事故:foreach 里删元素抛 ConcurrentModificationException;字符串循环拼接拖垮 GC;静态 SimpleDateFormat 在并发下产出错乱日期;BIO 线程模型被连接数打爆。
类库的坑不在 API 签名里,在"多线程/大规模/长周期"这三个放大器上。
CME 的完整机理、删除的正确姿势、ArrayList 与 LinkedList 的真实差距、HashMap 的树化与容量。
一段日志循环把新生代打满的事故,引出不可变设计、常量池复用与 intern 的边界。
并发下"昨天变明年"的日期错乱,java.time 的正确答案与 ThreadLocal 的过渡方案。
从"一连接一线程"到多路复用,理解压测时线程数飙到四位数的原因。
四块类库的坑可以排成一条线:数据结构(集合)→ 数据表示(字符串)→ 时间语义(日期)→ 数据搬运(IO),越往后越接近系统边界,事故半径越大。
类库 隐含假设被打破点 事故形态 -------- ---------------------- -------------------- 集合 迭代中结构不变 CME 或漏元素 字符串 拼接免费 GC 压力 性能悬崖 日期 格式化器无状态 并发下日期错乱 IO 连接数有限 线程爆炸 句柄耗尽