【2025最新版Kotlin教程】Kotlin第一行代码系列第十七课-协程切换线程
协程中有CoroutineContext参数的就可以切换线程:就是我的协程要在什么线程中运行。 在Android开发中一般只有主线程和IO线程切换即可
创建协程中的方式都可以切换线程
示例代码:
fun main() {
//看下之前的例子,观察线程名是否一样
//关键有CoroutineContext参数的就可以随便切换线程
GlobalScope.launch(Dispatchers.IO) {
println("Coroutine in:${Thread.currentThread().name}")
//这里就是协程域了,可以调任何协程的方法
println("Hello 协程1")
// 协程的延迟操作,后面的代码要等延迟跑完
delay(1000L)
println("Hello 协程")
}
println("out thread:${Thread.currentThread().name}")
// 延迟主线程,要不main函数一瞬间就跑完,进程就结束了,自然你就看不到上面协程的输出了
Thread.sleep(2000L)
/**
* 顺便讲下CoroutineStart参数
* 最常用的其实是 DEFAULT 和 LAZY
*
* LAZY 是懒汉式启动,launch 后并不会有任何调度行为,协程体也自然不会进入执行状态,直到我们需要它执行的时候。
* 调用 Job.start,主动触发协程的调度执行
* 调用 Job.join,隐式的触发协程的调度执行
* 调用 async.await()
*/
fun lazyTest() {
println(1)
val job = GlobalScope.launch(start = CoroutineStart.LAZY) {
println(2)
}
println(3)
job.start()//协程开始
println(4)
//不让程序结束这么快
Thread.sleep(5000L)
}
lazyTest()
}
整个kotlin教程的源码项目结构图:
有问题或者完整源码的可以看简介联系我,也可以私信我,我每天都看私信的