Почему Thread.sleep нельзя использовать на корутинах

«Почему Thread.sleep нельзя использовать на корутинах» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Thread.sleep() блокирует текущий поток, что противоречит концепции корутин, которые должны быть неблокирующими. Вместо этого в корутинах используется delay() из kotlinx.coroutines, который приостанавливает корутину без блокировки потока, позволяя другим корутинам работать.

Пример:

suspend fun doWork() {
    delay(1000) // Не блокирует поток
    // Thread.sleep(1000) <- Так делать нельзя!
}

delay() - suspend-функция, которая может быть вызвана только из корутины или другой suspend-функции. Она освобождает поток для выполнения других задач во время ожидания.