Kotlin предоставляет следующие элементы многопоточности:
launch (запускает корутину без возврата значения), async (запускает корутину и возвращает Deferred, которое можно ожидать для получения результата).
kotlin
Dispatchers: Определяют, на каком пуле потоков будет выполняться корутина. Основные:
Dispatchers.Default: Общий пул потоков для CPU-интенсивных задач.Dispatchers.IO: Пул потоков для блокирующих операций ввода/вывода (работа с файлами, сетью).Dispatchers.Main: Диспетчер для потока пользовательского интерфейса в соответствующих платформах (Android, Swing).Dispatchers.Unconfined: Корутина запускается в текущем потоке, но может возобновиться в любом потоке.kotlin
runBlocking: Функция-строитель корутины, которая блокирует текущий поток до завершения корутины. Используется для объединения блокирующего и неблокирующего кода, часто в тестах или main-функциях.
kotlin
suspend функции: Функции, выполнение которых может быть приостановлено и возобновлено. Могут быть вызваны только из других suspend функций или строителей корутин.
kotlin
Job: Хэндл на запущенную корутину. Предоставляет методы для управления жизненным циклом корутины (отмена, ожидание завершения).
kotlin
CoroutineScope: Определяет область видимости для корутин. Корутины, запущенные в определенной области видимости, автоматически отменяются при отмене области. Помогает управлять жизненным циклом корутин.
kotlin
Channel): Примитивы для безопасной передачи данных между корутинами. Каналы могут быть односторонними (только для отправки или получения) или двусторонними.
kotlin
Mutex): Примитивы синхронизации для обеспечения эксклюзивного доступа к общему ресурсу. Обеспечивают потокобезопасность, позволяя только одной корутине владеть мьютексом в определенный момент времени.
kotlin
StateFlow, SharedFlow): Примитивы для работы с потоками данных в контексте реактивного программирования и многопоточности. StateFlow представляет собой "холодный" поток с текущим состоянием, а SharedFlow - "горячий" поток для широковещательной рассылки данных.