Ответ
В Kotlin корутинах Dispatcher использует следующие пулы потоков:
- Dispatchers.Default – пул потоков для CPU-интенсивных задач (размер равен числу ядер CPU, минимум 2).
- Dispatchers.IO – пул для блокирующих операций (по умолчанию до 64 потока).
- Dispatchers.Main – главный поток UI (Android, JavaFX и др.).
- Dispatchers.Unconfined – не имеет своего пула, запускается в текущем потоке.
Пример:
launch(Dispatchers.Default) { /* CPU-heavy task */ }
launch(Dispatchers.IO) { /* Blocking I/O */ }
launch(Dispatchers.Main) { /* Update UI */ }
Для кастомных пулов можно использовать Executor.asCoroutineDispatcher().