在 Kotlin 中,可以使用协程(Coroutines)来实现两个异步任务的协同并发。协程是一种轻量级的线程,可以在异步任务之间进行切换,并且能够方便地等待异步任务的结果。

以下是一个示例代码,演示了如何使用协程实现两个异步任务的协同并发,相互等待结果后执行:

import kotlinx.coroutines.*

fun main() {
    // 创建一个协程作用域
    runBlocking {
        // 启动第一个异步任务,并等待其结果
        val result1 = async { task1() }.await()

        // 启动第二个异步任务,并等待其结果
        val result2 = async { task2() }.await()

        // 在两个异步任务都完成后,执行最终的操作
        finalOperation(result1, result2)
    }
}

suspend fun task1(): String {
    // 模拟一个耗时的异步操作
    delay(1000)
    return 'Result from Task 1'
}

suspend fun task2(): Int {
    // 模拟一个耗时的异步操作
    delay(2000)
    return 42
}

fun finalOperation(result1: String, result2: Int) {
    // 执行最终的操作,使用两个异步任务的结果
    println('Task 1 Result: $result1')
    println('Task 2 Result: $result2')
}

在上面的示例中,我们使用 runBlocking 函数创建了一个协程作用域,然后使用 async 函数启动了两个异步任务 task1task2async 函数返回一个 Deferred 对象,我们可以使用 await 函数来等待异步任务的结果。

main 函数中,我们先等待 task1 的结果,然后再等待 task2 的结果。最后,我们调用 finalOperation 函数来执行最终的操作,使用两个异步任务的结果。

运行上面的示例代码,你会看到 task1task2 会同时开始执行,并在各自完成后等待对方的结果,最后执行最终的操作。

需要注意的是,在协程中使用 delay 函数来模拟异步操作的耗时,以及在异步任务的函数中使用 suspend 关键字来标记函数为可挂起的。

Kotlin 协程:实现两个异步任务的协同并发

原文地址: https://www.cveoy.top/t/topic/qvGc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录