import kotlinx.coroutines.yield

suspend fun suspendTask1() {
    println("Start task1 | Thread ${Thread.currentThread()}")
    yield()
    println("End task1 | Thread ${Thread.currentThread()}")
}

suspend fun suspendTask2() {
    println("Start task2 | Thread ${Thread.currentThread()}")
    yield()
    println("End task2 | Thread ${Thread.currentThread()}")
}

fun main() {
    println("Start main")

    runBlocking {
        launch { suspendTask1() }
        launch { suspendTask2() }
        println("Called task1 and task2 from ${Thread.currentThread()}")
    }
    
    println("End main")
 }