Что такое Coroutine Dispatchers? Какие виды есть?

Coroutine Dispatchers — это механизм, управляющий тем, на каком(-их) потоке(-ах) или в каком пуле будет выполняться корутина. Dispatcher — это часть контекста корутины (CoroutineContext), элемент CoroutineContext.Element, задающий CoroutineDispatcher.

Если при запуске корутины не задан явный dispatcher, используется контекст родителя или Dispatchers.Default

Основные виды встроенных Dispatcher‑ов:

  • Dispatchers.Main — Запуск на UI/главном потоке (Android, Swing, JavaFX) — используется для работы с интерфейсом пользователя (обновление интерфейса).
  • Dispatchers.Default — Оптимизирован для CPU‑интенсивных задач (обработка, вычисления) — пул рабочих потоков. Тяжёлые вычисления (агрегация, сортировка, парсинг).
  • Dispatchers.IO — Оптимизирован для I/O‑операций (файлы, сеть, база данных) — пул потоков с более высокой ёмкостью. Блокирующие/длительные операции (чтение/запись, сеть).
  • Dispatchers.Unconfined — Не привязан к конкретному потоку: запускается на текущем, а при возобновлении — возможно на другом; используется редко. Если задача не зависит от потока и короткая, то нужно использовать очень осторожно.
  • newSingleThreadContext(«Name») — Создаёт dispatcher, который использует один конкретный поток с именем.
  • Пользовательские (custom) dispatcher — Можно создавать свои через Executors, FixedThreadPool, и преобразовывать в dispatcher.


Опубликовано

в

,

от

Метки: