Suspending Code Execution with Kotlin Coroutines
Using JVM threads efficiently can be difficult, especially if your application has blocking / waiting operations. This post explains how Kotlin Coroutines can be used to free a thread of a blocking task instead of waiting and how this can even lead to parallel code execution.