Below code prints 

```
import kotlinx.coroutines.*

    fun main() = runBlocking<Unit> {
        launch(Dispatchers.Unconfined) {
            // not confined -- will work with main thread
            println("thread ${Thread.currentThread().name}")
            delay(500)
            println("thread ${Thread.currentThread().name}")
        }
    }

```

1st run on caller thread but after first suspension point it runs on DefaultExecutor in “Dispatchers.Unconfined”

```
 thread main
 thread kotlinx.coroutines.DefaultExecutor

```