Coroutines are lightweight threads. By lightweight, it means that creating coroutines doesn’t allocate new threads. Instead, they use predefined thread pools and smart scheduling for the purpose of which task to execute next and which tasks later . Coroutines are basically of two types: Stackless Stackful Stackless coroutines, it means that the coroutines don’t have their own stack, so they don’t map on the native thread. Kotlin Coroutines Features. Lightweight- One can run many coroutines on a single thread due to support for suspension, which doesn’t block the thread where the coroutine is running. Suspending frees memory over blocking while supporting multiple concurrent operations. Built-in cancellation support : Cancellation is generated automatically through the running coroutine hierarchy. Fewer memory leaks : It uses structured concurrency to run operations within a scope. Jetpack integration : Many Jetpack libraries include extensions that provide full corou...