其他
Kotlin中的挂起与恢复,到底是什么?
https://juejin.cn/user/2251439606079277
Job#isActivte 协程是否活跃 Job#isCancelled 协程是否被取消 Job#isCompleated 协程是否执行完成协程体
println("main start") // 1
runBlocking<Unit> {
println("runBlocking start") // 2
delay(2000)
println("runBlocking end") // 3
}
println("main 执行中..") // 4
Thread.sleep(2100)
println("main end") // 5
}
println("main start") // 1
val job = launch { // 协程1
println("launch 1 start") // 2
delay(1000L) // TODO 延时1
println("launch 1 end") // 3
}
println("main mid") // 4
val job2 = launch { // 协程2
println("launch 2 start") //5
delay(1000L) // TODO 延时2
println("launch 2 end") //6
}
delay(1500) // TODO 延时3
println("main end") // 7
}
coroutineContext[Job] 存活可以执行协程2中协程体的代码 Dispatchers.IO 不会阻塞线程
fun main() {
val useTime = measureTimeMillis {
runBlocking<Unit> {
println("main start") // 1
val job = GlobalScope.launch { // TODO 全局协程
println("launch 1 start") // 2
delay(1000L) // 延迟1
println("launch 1 end") // 3
}
println("main mid") // 4
launch(context = job) { // TODO 子协程
println("launch 2 start") // 5
delay(2000L) // 延迟2
println("launch 2 end") // 6
}
println("main end") // 7
}
}
println("使用时间: $useTime")
}
https://gitee.com/lanyangyangzzz/coroutine-project/blob/main/app/src/main/java/com/szj/coroutine/project/jvm/blog3/Client.kt