| layout |
pattern |
| title |
Promise |
| folder |
promise |
| permalink |
/patterns/promise/ |
| categories |
Concurrency |
| tags |
Java |
Functional |
Reactive |
Difficulty-Intermediate |
|
CompletableFuture
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.

Promise pattern is applicable in concurrent programming when some work needs to be done asynchronously
and:
- code maintainablity 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.
- Async Method Invocation
- Callback