Library support for Kotlin coroutines. This is a companion version for Kotlin 1.1.0-beta-22 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 itsJob
.run(context) {...}
to switch to a different context inside a coroutine.runBlocking {...}
to use asynchronous Kotlin APIs from a thread-blocking code.defer(context) {...}
andlazyDefer(context) {...}
to get a deferred result of coroutine execution in a non-blocking way via a light-weight future interface calledDeferred
.delay(...)
for a non-blocking sleep in coroutines andyield
to release a thread in single-threaded dispatchers.withTimeout(timeout) {...}
scope function to easily set coroutine time-limit (deadline), andNonCancellable
context to avoid it when needed.CommonPool
andHere
contexts, access tocontext
of a parent coroutine in itsCoroutineScope
.newSingleThreadContext(...)
andnewFixedThreadPoolContext(...)
functions,Executor.toCoroutineDispatcher()
extension.- Cancellation support with
Job
interface andsuspendCancellableCoroutine
helper function. - Debugging facilities for coroutines (run JVM with
-ea
or-Dkotlinx.coroutines.debug
options) andnewCoroutineContext(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 returnsCompletableFuture
and works inCommonPool
context by default..await()
suspending function forCompletableFuture
.
-
kotlinx-coroutines-nio
module with extensions for asynchronous IO on JDK7+. -
kotlinx-coroutines-swing
module withSwing
context for Swing UI applications. -
kotlinx-coroutines-javafx
module withJavaFx
context for JavaFX UI applications. -
kotlinx-coroutines-rx
module with utilities to buildObservable
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)
- Guide to kotlinx.coroutines by example
- Change log for kotlinx.coroutines
- Coroutines design document (KEEP)
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-Beta
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.5-beta</version>
</dependency>
And make sure that you use the right Kotlin version:
<properties>
<kotlin.version>1.1.0-beta-22</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.5-beta'
And make sure that you use the right Kotlin version:
buildscript {
ext.kotlin_version = '1.1.0-beta-22'
}