Sobes.tech
Back to questions
Junior — Middle
70

Как различается использование корутин и потоков при реализации асинхронных задач?

Companies where asked
trendtech

Answer from AI

sobes.tech AI

Потоки (Threads) — это системные объекты, которые позволяют выполнять несколько задач параллельно, каждая со своим собственным стеком вызовов и контекстом выполнения. Создание и переключение между потоками достаточно ресурсоёмко, и при большом количестве потоков может возникать накладная нагрузка.

Коррутины (Coroutines) — это легковесные компоненты, которые позволяют приостанавливать и возобновлять выполнение функций без создания новых потоков. Они работают в рамках одного или нескольких потоков, но позволяют писать асинхронный код последовательно и эффективно управлять задачами без блокировок.

Основные различия:

  • Потоки — тяжелые, корутины — легковесные.
  • Потоки требуют переключения контекста на уровне ОС, корутины — на уровне языка.
  • Коррутины позволяют писать асинхронный код проще и читаемее.

Пример корутины в Kotlin для Android:

GlobalScope.launch(Dispatchers.IO) {
    val data = fetchDataFromNetwork() // асинхронная операция
    withContext(Dispatchers.Main) {
        updateUI(data)
    }
}