LearnViz CompSci
Home / Learn / Concurrency & Parallelism / Futures and Promises Model

Intermediate Topic 21 of 51 Concurrency & Parallelism

Futures and Promises Model

Handles for results computed elsewhere.

How it works

Futures and promises separate a computation's result from its producer. A future is a read-only placeholder for a value that will be available later, and a promise is the writable side that the producer completes with a value or an error. Consumers can block waiting for the result, attach continuations that run on completion, compose futures with combinators such as map, then and all and handle failures. The model appears as CompletableFuture in Java, std::future in C++, Promise in JavaScript and Future in Scala and Rust.

Where it is used

Asynchronous APIs, parallel fan-out and fan-in of requests, pipelines of dependent operations and bridging callback-based code use futures.

Common pitfall

Blocking on futures negates their benefit and can deadlock thread pools. Unobserved failures disappear unless handled. Futures are typically single-assignment, so they do not model streams. Eager versus lazy start semantics differ between languages. Cancellation is often not supported cleanly. Compose rather than block, and always attach error handling.

Where it fits in the course

Futures and Promises Model is topic 21 of 51 in Concurrency & Parallelism, rated Intermediate. It follows Coroutines. The next topic is Green Threads.

Practice and explore

How to study this topic

  1. Read the explanation above and restate the definition in your own words.
  2. Open the interactive lesson and answer its mini quiz.
  3. Read the common pitfall, then write a short example that avoids it.
  4. Check your understanding in the Concurrency & Parallelism quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is Futures and Promises Model?
Handles for results computed elsewhere. It belongs to Concurrency & Parallelism and is an intermediate-level topic.
Where do people use Futures and Promises Model?
Asynchronous APIs, parallel fan-out and fan-in of requests, pipelines of dependent operations and bridging callback-based code use futures.
What is the most common mistake with Futures and Promises Model?
Blocking on futures negates their benefit and can deadlock thread pools.
What should I learn before this topic?
Start with Coroutines, the topic just before it in Concurrency & Parallelism.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Concurrency & Parallelism quiz.
Is Futures and Promises Model hard to learn?
It is an Intermediate topic. Be comfortable with the Beginner topics in this area first, then read the common pitfall carefully, since it is where most mistakes happen.
How long does it take to learn Futures and Promises Model?
Most learners can read the explanation and finish the interactive lesson in under an hour. Fluency comes from applying the idea, so plan a few short practice sessions with the quiz.
Which topics are related to Futures and Promises Model?
Coroutines, Green Threads, Event-Driven Concurrency are closely connected. The full list is in the related topics section of this page.
What should I study after Futures and Promises Model?
Continue with Green Threads, the next topic in Concurrency & Parallelism.

Related topics