На каких потоках работает Dispatchers.Unconfined

«На каких потоках работает Dispatchers.Unconfined» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Dispatchers.Unconfined работает на текущем потоке до первой точки приостановки (suspend). После возобновления корутина продолжает выполнение в потоке, который вызвал возобновление (например, в UI-потоке, если suspend-функция была вызвана из него).

Пример:

runBlocking {
    launch(Dispatchers.Unconfined) {
        println("Start in ${Thread.currentThread().name}") // Может быть main или другой
        delay(100)
        println("After delay in ${Thread.currentThread().name}") // Зависит от потока возобновления
    }
}

Используется редко, в основном для тестов или специфичных случаев, где неважен поток выполнения.