In the broadest sense,
- A future or promise can be thought of as a value that will eventually become available.
- Future is used for sychronizing program execution.
- Future acts as a proxy for an result which will be eventually available.
- The construct ( future X ) immediately returns a future for the value of the expression X and concurrently begins evaluating X. When the evaluation of X yields a value, that value replaces the future.
- A future is a placeholder object for a result that does not yet exist. A promise is a writable, single-assignment container, which completes a future. Promises can complete the future with a result to indicate success, or with an exception to indicate failure.