Ответ
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}") // Может быть другой поток
}
}