CompletableDeferred:Kotlin 协程中用于一次性挂起通信的工具
很适合处理“等待某个操作完成后再继续”的场景CompletableDeferred 有两个状态未完成调用 await() 的协程会挂起等待。已完成await() 立即返回结果且后续 await() 都会拿到同一个结果。它不能重复设置值重复调用 complete() 会返回 false 并忽略第二次。import kotlinx.coroutines.* import kotlinx.coroutines.CompletableDeferred suspend fun main() { val deferred CompletableDeferredInt() // 协程 A等待结果 val jobA CoroutineScope(Dispatchers.Default).launch { println(A 等待中...) val value deferred.await() println(A 拿到结果: $value) } // 协程 B模拟耗时操作后完成 val jobB CoroutineScope(Dispatchers.Default).launch { println(B 开始干活) delay(1000) deferred.complete(42) println(B 完成设置结果) } jobA.join() jobB.join() }输出结果A 等待中... B 开始干活 B 完成设置结果 A 拿到结果: 42