Reactive programming can be achieved on several ways. Below a short list of technologies and frameworks in Java landscape.
- Executor service in combination of Futures. For fire and forget implementations, use Runnable threads. For implementations whereby a response is required (Fork-Join), use a Callable implementation.
- ExecutorCompletionService (Producer-Consumer approach).
Asynchronous service calls. This can be achieved by using an Executorservice or by using the Asynchronous Java EE methods. This is particularly useful for legacy applications.
- Actor based frameworks like Akka.
- RxJava framework
- CompletionService of Java 8