commit | b7721cf756cad7de4f611f1fed510efc4f8b43f1 | [log] [tgz] |
---|---|---|
author | Roman Elizarov <elizarov@gmail.com> | Fri Feb 03 19:23:08 2017 +0300 |
committer | Roman Elizarov <elizarov@gmail.com> | Tue Feb 07 10:15:04 2017 +0300 |
tree | 825edce68735e5cf6b3a0d2cd9897cc529983987 | |
parent | 12f961d4e5076808ae4db614ec9305d65bc9e04d [diff] |
Guide for channel basics
Library support for Kotlin coroutines. This is a companion version for Kotlin 1.1.0-beta-38 release.
kotlinx-coroutines-core
module with core primitives to work with coroutines. It is designed to work on any JDK6+ and Android and contains the following main pieces:
launch(context) {...}
to start a coroutine in the given context and get reference to its Job
.run(context) {...}
to switch to a different context inside a coroutine.runBlocking {...}
to use asynchronous Kotlin APIs from a thread-blocking code.defer(context) {...}
and lazyDefer(context) {...}
to get a deferred result of coroutine execution in a non-blocking way via a light-weight future interface called Deferred
.delay(...)
for a non-blocking sleep in coroutines and yield
to release a thread in single-threaded dispatchers.withTimeout(timeout) {...}
scope function to easily set coroutine time-limit (deadline), and NonCancellable
context to avoid it when needed.CommonPool
and Here
contexts, access to context
of a parent coroutine in its CoroutineScope
.newSingleThreadContext(...)
and newFixedThreadPoolContext(...)
functions, Executor.toCoroutineDispatcher()
extension.Job
interface and suspendCancellableCoroutine
helper function.-ea
or -Dkotlinx.coroutines.debug
options) and newCoroutineContext(context)
function to write user-defined coroutine builders that work with these debugging facilities.kotlinx-coroutines-jdk8
module with additional libraries for JDK8 (or Android API level 24).
future { ... }
coroutine builder that returns CompletableFuture
and works in CommonPool
context by default..await()
suspending function for CompletableFuture
.kotlinx-coroutines-nio
module with extensions for asynchronous IO on JDK7+.
kotlinx-coroutines-swing
module with Swing
context for Swing UI applications.
kotlinx-coroutines-javafx
module with JavaFx
context for JavaFX UI applications.
kotlinx-coroutines-rx
module with utilities to build Observable
objects from RxJava with imperative coroutines and consume their values from inside coroutines. It is in very basic form now (example-only, not even close to production use)
Note that these libraries are experimental and are subject to change.
The libraries are published to kotlin-eap-1.1 bintray repository.
These libraries require kotlin compiler version to be at least 1.1.0-beta-38
and require kotlin runtime of the same version as a dependency, which can be obtained from the same repository.
Add the bintray repository to <repositories>
section (and also add pluginRepository
to <pluginRepositories>
, if you're willing to get kotlin-maven-plugin
from there):
<repository> <snapshots> <enabled>false</enabled> </snapshots> <id>dl</id> <name>bintray</name> <url>http://dl.bintray.com/kotlin/kotlin-eap-1.1</url> </repository>
Add dependencies (you can also add other modules that you need):
<dependency> <groupId>org.jetbrains.kotlinx</groupId> <artifactId>kotlinx-coroutines-core</artifactId> <version>0.6-beta</version> </dependency>
And make sure that you use the right Kotlin version:
<properties> <kotlin.version>1.1.0-beta-38</kotlin.version> </properties>
Add the bintray repository (and also add it to buildScript
section, if you're willing to get kotlin-gradle-plugin
from there):
repositories { maven { url "http://dl.bintray.com/kotlin/kotlin-eap-1.1" } }
Add dependencies (you can also add other modules that you need):
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.6-beta'
And make sure that you use the right Kotlin version:
buildscript { ext.kotlin_version = '1.1.0-beta-38' }