Что такое Coroutine Context?

CoroutineContext — это набор объектов, определяющих поведение корутины. Он лежит в основе работы всех корутин и определяет:

  • На каком диспетчере (потоке) выполняется корутина
  • К какому Job она принадлежит (для отмены и иерархии)
  • Есть ли имя для логирования (CoroutineName)

Структура CoroutineContext

«Под капотом» CoroutineContext — это интерфейс, реализующий нечто вроде иммутабельного Map<Key, Element>. Он устроен как цепочка Element-ов. Каждый Element — это одна часть контекста:

  • Dispatcher — задает диспетчер потоков(пулом потоков), на котором будут выполняться задачи.
  • Job — отвечает за иерархию, статус активности и отмену.
  • CoroutineName — позволяет задать имя корутины (для логов и дебага).
  • ExceptionHandler — обработка не отловленных исключений

Все они реализуют CoroutineContext.Element, и каждый имеет свой Key


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

в

,

от

Метки: