书接上回:Android Kotlin知识汇总(三)Kotlin 协程
协程的并发问题
在一个协程中,循环创建10个子协程且单独运行各自Default线程中,并让每个子协程对变量 i 进行1000次自增操作。示例如下:
fun main() = runBlocking {
var i = 0
repeat(10) {
val job = launch(Dispatchers.Default) {
repeat(1000) {
i++
}
}
}
println("i: $i")
}
/*
输出信息:i: 9310
*/
此时,这10个协程运行在不同的线程中,可能会出现并发问题,最终结果小于、等于10000。
解决并发问题
我们知道,在 Java 中最简单的同步方式是 synchronized、Atomic、Lock等同步手段。事实上,在Kotlin 协程中也是可以同样适用这些同步手段的。