Post
好的并发代码,不等于 clever code
并发实现可以复杂,但复杂不等于巧;真正高质量的代码最终还是要让约束和行为清楚可推理。
很多人一看到不好懂的代码,就会直接扣上 clever code 的帽子。但在并发基础设施这类地方,这个判断经常过于粗暴。
像 Doug Lea 写的那些并发实现,包括 ForkJoinPool、ConcurrentSkipListMap 这类代码,本来就不是靠“直白流程”取胜的。它们面对的是竞争条件、内存语义、无锁路径和性能边界这些本来就复杂的问题,所以实现复杂并不奇怪。
我会觉得,真正需要警惕的不是“代码有点难”,而是那种复杂度没有问题支撑、只是作者为了炫技巧堆出来的写法。
反过来说,好的并发代码往往有个共同特点:
- 表面上可能不简单
- 但结构通常是有明确约束的
- 每个分支和原子操作都对应实际问题
所以评价这类代码,关键不是它一眼看上去顺不顺,而是它的复杂度到底是不是被问题本身逼出来的。