import kotlinx.coroutines.*
droop enjoyable launchTask(delayMillis: Lengthy) {
println("START process $delayMillis")
delay(delayMillis)
println("END launchTask $delayMillis")
}
enjoyable fundamental() = runBlocking {
println("begin fundamental")
val scope = CoroutineScope(Dispatchers.Default)
scope.launch {
launchTask(10000)
}
scope.launch {
launchTask(500)
}
// Cancel all coroutines within the scope after 2 seconds
delay(2000)
scope.cancel()
println("finish fundamental")
}
Right here we explicitly create a CoroutineScope
and use it to launch our two suspended operate calls, once more utilizing the default dispatcher. With the deal with to the scope, we will begin our jobs after which cancel them with scope.cancel()
. Discover that we’ve two duties, one with a delay of 10,000 milliseconds. As a result of we cancel after 2,000 milliseconds, we get the next output:
begin fundamental
START process 500
START process 10000
END launchTask 500
finish fundamental
So, the ten,000-millisecond process was began however by no means accomplished. As an alternative, it was canceled together with its enclosing scope.
For an additional diploma of sophistication, we will add a withTimeout
block: