February 2018
Intermediate to advanced
350 pages
7h 35m
English
One way for two coroutines to communicate (or for a coroutine to the external world as with async) is through Deferred<T>:
import kotlinx.coroutines.experimental.delayimport kotlinx.coroutines.experimental.launchimport kotlinx.coroutines.experimental.runBlockingfun main(args: Array<String>) = runBlocking { val result = CompletableDeferred<String>() val world = launch { delay(500) result.complete("World (from another coroutine)") } val hello =launch { println("Hello ${result.await()}") } hello.join() world.join()}
Deferreds are fine for single values, but sometimes we want to send a sequence or a stream. In that case, we can use Channel. Channel which is similar to BlockingQueue, but with suspending operations instead of blocking ...
Read now
Unlock full access