Блокирующая операция полностью останавливает поток, на котором она выполняется — никакая другая работа не может быть выполнена на этом потоке, пока операция не завершится. Приостанавливающая операция, с другой стороны, приостанавливает только сам корутин, оставляя базовый поток свободным для выполнения других задач.
Thread.sleep(1000) // блокирует поток на 1 секунду
Во время этого вызова поток полностью занят и не может быть использован для чего-либо ещё.
delay(1000) // приостанавливает корутин, но освобождает поток
Здесь корутин приостанавливается, но поток возвращается в пул и может запустить другие корутины в это время.
suspend и может быть вызван только из корутина или другой suspend-функцииПриостанавливающие операции — основа эффективности корутинов в Kotlin. Освобождая потоки во время ожидания, небольшое количество потоков может обрабатывать большое количество одновременно выполняющихся корутинов — что делает корутины значительно более масштабируемыми по сравнению с традиционными подходами, блокирующими потоки.
Блокирующая операция вроде Thread.sleep() полностью занимает поток, не позволяя выполнять никакую другую работу на этом потоке до её завершения.
Новый — ещё не проверен сообществом
Вы