第4章 常用类库的坑地图


文档摘要

第4章 · 常用类库的坑地图 章节摘要:集合、字符串、日期、IO 是日常代码里出现频率最高的四块,也是坑密度最高的四块。本章四个事故:foreach 里删元素抛 ConcurrentModificationException;字符串循环拼接拖垮 GC;静态 SimpleDateFormat 在并发下产出错乱日期;BIO 线程模型被连接数打爆。 学习目标 解释 fail-fast 迭代器的 modCount 机制,掌握安全的边遍历边删除写法 说清 String 不可变与常量池,按场景选择 StringBuilder 或拼接策略 掌握 java.

第4章 · 常用类库的坑地图

章节摘要:集合、字符串、日期、IO 是日常代码里出现频率最高的四块,也是坑密度最高的四块。本章四个事故:foreach 里删元素抛 ConcurrentModificationException;字符串循环拼接拖垮 GC;静态 SimpleDateFormat 在并发下产出错乱日期;BIO 线程模型被连接数打爆。

学习目标

  1. 解释 fail-fast 迭代器的 modCount 机制,掌握安全的边遍历边删除写法
  2. 说清 String 不可变与常量池,按场景选择 StringBuilder 或拼接策略
  3. 掌握 java.time 的线程安全设计与日期格式化的并发正解
  4. 对比 BIO/NIO/AIO 的线程模型,理解"一连接一线程"的容量天花板

核心概念速览

类库的坑不在 API 签名里,在"多线程/大规模/长周期"这三个放大器上。

子章节导航

4.1 集合选型与遍历删元素事故

CME 的完整机理、删除的正确姿势、ArrayList 与 LinkedList 的真实差距、HashMap 的树化与容量。

4.2 字符串拼接与常量池

一段日志循环把新生代打满的事故,引出不可变设计、常量池复用与 intern 的边界。

4.3 SimpleDateFormat 线程安全事故

并发下"昨天变明年"的日期错乱,java.time 的正确答案与 ThreadLocal 的过渡方案。

4.4 IO 与 NIO 的阻塞之坑

从"一连接一线程"到多路复用,理解压测时线程数飙到四位数的原因。

子章节之间的逻辑关系

四块类库的坑可以排成一条线:数据结构(集合)→ 数据表示(字符串)→ 时间语义(日期)→ 数据搬运(IO),越往后越接近系统边界,事故半径越大。

类库 隐含假设被打破点 事故形态 -------- ---------------------- -------------------- 集合 迭代中结构不变 CME 或漏元素 字符串 拼接免费 GC 压力 性能悬崖 日期 格式化器无状态 并发下日期错乱 IO 连接数有限 线程爆炸 句柄耗尽

前置知识与后续延伸

  • 前置:第 1 章 equals/hashCode、第 3 章异常语义。
  • 为后续铺垫:第 5 章并发容器与线程池、第 6 章 IO 引发的内存问题、第 7 章连接池都直接复用本章结论。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U