* Moves partial-response to Java 11 * Moves pipeline to Java 11 * Moves poison-pill to Java 11 * Moves priority-queue to Java 11 * Moves private-class-data to Java 11 * Moves producer-consumer to Java 11 * Moves promise to Java 11 * Moves property to Java 11 * Moves prototype to Java 11 * Moves proxy to Java 11 * Corrects checkstyle errors * Fixes build for pipeline pattern
layout, title, folder, permalink, categories, tags
layout | title | folder | permalink | categories | tags | |
---|---|---|---|---|---|---|
pattern | Promise | promise | /patterns/promise/ | Concurrency |
|
Also known as
CompletableFuture
Intent
A Promise represents a proxy for a value not necessarily known when the promise is created. It allows you to associate dependent promises to an asynchronous action's eventual success value or failure reason. Promises are a way to write async code that still appears as though it is executing in a synchronous way.
Class diagram
Applicability
Promise pattern is applicable in concurrent programming when some work needs to be done asynchronously and:
- Code maintainability and readability suffers due to callback hell.
- You need to compose promises and need better error handling for asynchronous tasks.
- You want to use functional style of programming.
Real world examples
Related Patterns
- Async Method Invocation
- Callback