The main purpose of this project is to enable async interaction with the existing, sync, InputStream and OutputStream primitives in Java.
All I/O operations are performed on the ForkJoinPool thread pool. A CompletableFuture is returned from each async operation, so that it can be continued from.
Input operations never block as long as the InputStream implementation correctly reports its available bytes.
Output operations are not guaranteed to be non-blocking because OutputStream doesn't report its availability.
This async stack is based on a generic facility, WhenReady, that can be used for other kinds of async execution.
WhenReady takes a ready predicate eventually along with an action function, a result value, and/or a done predicate. When the ready predicate returns true, WhenReady may assign the result, it may execute the action once, or it may start executing the action in a loop until the done predicate returns true.
You'll find articles in the docs folder in this source tree.
Or, you may jump straight to the API Reference
If you don't find an answer for your question, please send an email to Zlatko Michailov.
This project uses Gradle to automate the build and test process.
gradle java
gradle test
gradle eclipse
Include these sectons in your build.gradle script:
repositories {
maven {
url "http://zlatko-michailov.github.io/async-io/repo/maven"
}
}
dependencies {
compile 'michailov:async-io:0.4'
}