Threading primitives

Kotlin and Java share a number of lower-level primitives for writing async code. These primitives can be used for simple, one-off operations, or can be combined with more complex systems so that you can manage asynchronous code in your project. This section will examine several of these primitives, including the following: