Coroutines are a great language feature in Kotlin. Here's an apt definition of coroutines according to the documentation:
"Coroutines are a new way of writing asynchronous, non-blocking code (and much more)."
It's not just the ease of use, it's much more powerful than threads, especially in the case of a mobile environment where even milliseconds of performance gain is appreciated. Spawning multiple threads can cause performance issues, which isn't the case with coroutines since there can be thousands of those running without much drop in performance levels.
The following is what the official documentation of Kotlin says:
"One can think of a coroutine as a lightweight thread. Like threads, coroutines can run in parallel, wait for each other, and communicate. The biggest difference is that coroutines...