launchUI{ println("Thread launchUI coroutine ${Thread.currentThread().name}") launch(CommonPool) { println("Thread inside coroutine is ${Thread.currentThread().name}") }.join() println("Thread after coroutine join ${Thread.currentThread().name}") } fun launchUI(block: suspend CoroutineScope.() -> Unit): Job { if (job.isCompleted) job = Job() return launch(UI + job, block = block) }