Kotlin 协程 asyn和launch简单使用

在 Kotlin 协程中,asynclaunch 都是协程构建器,但它们有一些重要的区别:

  1. 返回值:

    • launch 函数返回一个 Job 对象,代表一个在后台执行的任务。Job 可以用于等待任务完成、取消任务等操作。
    • async 函数返回一个 Deferred 对象,它是 Job 的子接口,并且包含一个计算结果。您可以使用 Deferred 对象来获取协程的执行结果。
  2. 用途:

    • launch 适用于启动一个无需返回值的后台任务。例如,执行一些异步的操作,但不需要等待结果。
    • async 用于启动一个需要返回结果的后台任务。您可以使用 await 函数来获取协程执行的结果。

下面是一个简单的例子,演示了这两个协程构建器的使用:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job = launch {
        // launch 启动一个后台任务
        delay(1000)
        println("Task from launch")
    }

    val deferred = async {
        // async 启动一个后台任务,并返回一个 Deferred 对象
        delay(500)
        println("Task from async")
        "Hello, World!"
    }

    // 等待 launch 任务完成
    job.join()

    // 等待 async 任务完成,并获取结果
    val result = deferred.await()
    println("Async task result: $result")
}

打印结果:

Task from async
Task from launch
Async task result: Hello, World!

在上面的例子中,launch 启动了一个简单的延迟任务,而 async 启动了一个延迟任务,并返回了一个 Deferred 对象,其中包含了字符串 "Hello, World!"。使用 await 函数可以获取 Deferred 对象的结果。

总的来说,launch 适用于启动无需返回值的后台任务,而 async 适用于启动需要返回结果的后台任务。

 

相关推荐

  1. Kotlin asynlaunch简单使用

    2024-01-19 15:12:05       36 阅读
  2. Kotlin : Coroutines 简单应用

    2024-01-19 15:12:05       32 阅读
  3. Kotlin

    2024-01-19 15:12:05       37 阅读
  4. Kotlin SharingStarted

    2024-01-19 15:12:05       37 阅读
  5. Kotlin 四 —— Flow Channel 的应用

    2024-01-19 15:12:05       29 阅读
  6. kotlin学习总结

    2024-01-19 15:12:05       30 阅读
  7. 快速入门Kotlin

    2024-01-19 15:12:05       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-19 15:12:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-19 15:12:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-19 15:12:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-19 15:12:05       18 阅读

热门阅读

  1. Kotlin学习第1篇——data class

    2024-01-19 15:12:05       36 阅读
  2. React16源码: React中的FunctionComponent的源码实现

    2024-01-19 15:12:05       30 阅读
  3. Kotlin协程的JVM实现源码分析(上)

    2024-01-19 15:12:05       33 阅读
  4. C生万物呀

    2024-01-19 15:12:05       34 阅读
  5. BAPI_ALM_ORDER_MAINTAIN -- 创建维修工单

    2024-01-19 15:12:05       28 阅读
  6. c++位运算

    2024-01-19 15:12:05       30 阅读
  7. python第三节:Str字符串类型(8)

    2024-01-19 15:12:05       34 阅读
  8. redis

    redis

    2024-01-19 15:12:05      29 阅读