Что такое Unconfined диспетчере

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

Ответ

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

Особенности:

  • Не привязан к конкретному потоку (может переключаться между потоками).
  • Не рекомендуется для production из-за непредсказуемого поведения (может блокировать UI или вызывать race conditions).

Пример:

fun main() = runBlocking {
    launch(Dispatchers.Unconfined) {
        println("Start in ${Thread.currentThread().name}") // Может быть main
        delay(100)
        println("Resume in ${Thread.currentThread().name}") // Может быть другой поток
    }
}