RxJava
Reactive Extensions for the JVM
... operators, all while abstracting away concerns like low-level threading, thread-safety, concurrent data structures and synchronization.
RxJava is commonly used for running simple background computations. It supports Java 6 or higher and languages that are based on JVM such as JRuby, Groovy and Clojure.