kotlin随笔-协程

72 阅读1分钟
1. 协程

协程允许我们在单线程模式下模拟模拟多线程编程的效果,代码执行时的挂起与恢复完全是由 编程语言控制的,和操作系统无关

1. 协程的3种启动方式
  1. launch
    launch是最常用的方式,它会立即返回一个Job对象,可以用它来取消协程或者检查其状态 如果需要启动一个独立的协程,并且不关心其结果和异常,最好是用launch
// 启动一个协程
fun main() = runBlocking {
    val job = launch {
        delay(1000L)
        println("World!")
    }
    println("Hello,")
    job.join() // 等待协程完成
}
    1. runBlocking
      runBlocking是一个阻塞式函数,主要用于测试和调试 它会启动一个新的协程,并等待该协程执行完毕后才会返回,同时会阻塞当前的线程
fun main() = runBlocking {
    launch {
        delay(1000L)
        println("World!")
    }
    println("Hello,")
}
    1. async
      async用于启动一个协程,并返回deferred对象,通过该对象可以获取协程的执行结果 deferred可以被取消,并且提供了await获取其结果
fun main() = runBlocking {
    val deferred = async {
        delay(1000L)
        "World!"
    }
    deferred.await()
    println("Hello, ${deferred.await()}") // 等待协程完成并获取结果
}