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 适用于启动需要返回结果的后台任务。

相关推荐
mrbone1119 分钟前
Git-git worktree的使用
开发语言·c++·git·cmake·worktree·gitab
小蜜蜂嗡嗡23 分钟前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
aqi0029 分钟前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
浪裡遊30 分钟前
Sass详解:功能特性、常用方法与最佳实践
开发语言·前端·javascript·css·vue.js·rust·sass
真实的菜37 分钟前
JVM类加载系统详解:深入理解Java类的生命周期
java·开发语言·jvm
代码讲故事1 小时前
多种方法实现golang中实现对http的响应内容生成图片
开发语言·chrome·http·golang·图片·快照·截图
虾球xz2 小时前
CppCon 2018 学习:EFFECTIVE REPLACEMENT OF DYNAMIC POLYMORPHISM WITH std::variant
开发语言·c++·学习
Allen_LVyingbo2 小时前
Python常用医疗AI库以及案例解析(2025年版、上)
开发语言·人工智能·python·学习·健康医疗
小哈龙2 小时前
裸仓库 + Git Bash 搭建 本地 Git 服务端与客户端
开发语言·git·bash
G探险者2 小时前
《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
java·开发语言·rpc