Chapter 5. Futures
In this chapter
- Using futures
- Composing futures
- Recovering from errors inside futures
- Combining futures and actors
In this chapter we’ll introduce futures. In short, futures are extremely useful and simple tools for combining functions asynchronously. The Akka toolkit initially provided its own future implementation. At the same time, several other libraries also had a future type, like the Twitter Finagle and scalaz libraries. Having proven its usefulness, the scala.concurrent package was redesigned through the Scala Improvement Process (SIP-14) to include Future as a common foundation in the standard Scala library. The Future type has been included in the standard library since Scala 2.10.
Like actors, futures are important asynchronous building blocks that create an opportunity for parallel execution. Both actors and futures are great tools best used for different use cases. It’s a question of the right tool for the right job. We’ll start with describing the type of use case that futures are best suited for, and work through some examples in section 5.1, “Use cases for futures.” Whereas actors provide a mechanism to build a system out of concurrent objects, futures provide a mechanism to build a system out of asynchronous functions.