Modern programming can not be imagined without long-running operations such as CPU-intensive computations or blocking IO running in the background. Unfortunately, having too many active threads is very expensive and kills performance, but there's a solution - coroutines. They provide a way to avoid blocking a thread and replace it with a cheaper and more controllable operation: suspension of a coroutine.
I'll talk about generators/yield, async/await, channels, composable/delimited continuations, and its usage; consider available APIs and make the overview of standard kotlinx.coroutines library.
About speakerDmitriy Zaitsev, Mobile Team Lead of Lohika Kyiv office – more than 6 years professionally engaged in developing Android apps and more than 3 years uses Kotlin. He creates solutions for information security, e-banking, medicine, social networks, and mechanical hardware. Today he's a mentor, open-source contributor, active speaker of Android Community, actual Judge of Dev Challenge.