Что такое корутина и чем она отличается от потока?
Корутина — приостанавливаемое вычисление, которое планирует рантайм Kotlin; поток планирует ОС. Приостановка освобождает поток, а не блокирует его, поэтому тысячи корутин делят небольшой пул. Отсюда следствие: блокирующий вызов внутри корутины полностью обесценивает затею — он держит тот самый поток, который должен был освободиться.