Eg1
package com.glassthought.sandbox
import gt.sandbox.util.output.Out
import kotlinx.coroutines.*
val out = Out.standard()
fun main() = runBlocking {
// Start two async operations in parallel
val deferredOne = async { fetchDataOne() }
val deferredTwo = async { fetchDataTwo() }
// Wait for results
val resultOne = deferredOne.await()
val resultTwo = deferredTwo.await()
out.println("Combined result: ${resultOne + resultTwo}")
}
// Simulated data fetch function
suspend fun fetchDataOne(): Int {
delay(1000) // Simulate a network or heavy computation delay
out.println("Fetched data one")
return 10
}
// Another simulated data fetch function
suspend fun fetchDataTwo(): Int {
delay(1500) // Simulate a network or heavy computation delay
out.println("Fetched data two")
return 20
}
Command to reproduce:
gt.sandbox.checkout.commit ffbd344f68e987e4c229 \
&& cd "${GT_SANDBOX_REPO}" \
&& cmd.run.announce "./gradlew run"
Recorded output of command:
> Task :app:checkKotlinGradlePluginConfigurationErrors SKIPPED
> Task :app:compileKotlin UP-TO-DATE
> Task :app:compileJava NO-SOURCE
> Task :app:processResources NO-SOURCE
> Task :app:classes UP-TO-DATE
> Task :app:run
[2024-11-13T04:21:47.368979Z][elapsed-since-start: 1061ms][tname:main/tid:1] Fetched data one
[2024-11-13T04:21:47.868301Z][elapsed-since-start: 1533ms][tname:main/tid:1] Fetched data two
[2024-11-13T04:21:47.871792Z][elapsed-since-start: 1536ms][tname:main/tid:1] Combined result: 30
BUILD SUCCESSFUL in 2s
2 actionable tasks: 1 executed, 1 up-to-date
Backlinks