Ответ
Unconfined — это диспетчер, который запускает корутину в текущем потоке до первой точки приостановки (suspend). После возобновления корутина выполняется в потоке, который вызвал функцию возобновления.
Пример:
runBlocking {
launch(Dispatchers.Unconfined) {
println("Start in ${Thread.currentThread().name}") // Текущий поток (например, main)
delay(100) // Приостановка
println("Resumed in ${Thread.currentThread().name}") // Может быть другой поток (например, DefaultDispatcher)
}
}
⚠️ Не рекомендуется для production-кода из-за непредсказуемости потока после возобновления. Подходит для тестов или специфичных сценариев.