Что такое structured concurrency

«Что такое structured concurrency» — вопрос из категории Coroutines и Flow, который задают на 35% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Structured concurrency — это подход к управлению потоками/корутинами, где их жизненные циклы строго вложены в родительскую область. Основные принципы:

  1. Иерархия — дочерние корутины завершаются до завершения родительской.
  2. Отмена — отмена родителя автоматически отменяет всех потомков.
  3. Обработка ошибок — исключение в дочерней корутине отменяет родителя и остальных потомков.

Пример с Kotlin корутинами:

scope.launch { // родитель
    launch { // дочерняя 1
        delay(1000)
        println("Child 1 done")
    }
    launch { // дочерняя 2
        delay(500)
        throw Exception("Oops!")
    }
}
// При ошибке в child 2, child 1 автоматически отменится

Преимущества: предсказуемость, отсутствие утечек, упрощение отладки.