协程进阶:同步 03. 原子操作 (Atomic)

本篇解析 example-sync-03.kt。探讨如何利用 Java 的原子类解决并发累加问题。

1. 核心工具:AtomicInteger

在 Java/Kotlin 中,AtomicInteger 利用了底层的 CAS(Compare-And-Swap)机制,保证了操作的原子性。

代码解析

1
2
3
4
5
6
7
val counter = AtomicInteger()
withContext(Dispatchers.Default) {
massiveRun {
counter.incrementAndGet() // 这是一个原子操作
}
}
// 结果:Counter = 100000 (准确)

2. 开发者感悟

对于简单的计数器或状态位,原子类是最轻量且高效的选择。它比使用锁(Lock)开销更小。但在处理复杂的业务逻辑(不仅是简单的加法)时,原子类的局限性就会体现出来,我们需要更通用的方案。

,