Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
import kotlinx.coroutines.* fun main() = runBlocking { println("Main starts on ${Thread.currentThread().name}") // launch returns a Job val job1 = launch { delay(200) println("Job 1 done on ${Thread.currentThread().name}") } val job2 = launch { delay(100) println("Job 2 done on ${Thread.currentThread().name}") } println("Waiting for jobs...") job1.join() // wait for job1 to complete // job2 likely already done // Launch many coroutines — lightweight vs threads val jobs = (1..50_000).map { i -> launch { delay(1000) print(".") } } jobs.forEach { it.join() } println() println("All 50,000 coroutines done!") } // coroutineScope — structured concurrency in a suspend function suspend fun doWork() = coroutineScope { val a = launch { delay(100); println("A") } val b = launch { delay(50); println("B") } // Both complete before doWork returns }
Result
Open