RxJava
Reactive Extensions for the JVM
...It helps you write cleaner and simpler code by providing methods for solving problems quickly, and is easy to maintain and understand.
RxJava works by extending the observer pattern in order to support sequences of data/events. It also allows you to compose sequences together declaratively through added 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.