You have units of work that you want to run asynchronously, so you don’t block while they’re running. A future gives you a simple way to run an algorithm concurrently. A future starts running concurrently when you create it and returns a result at some point, well, in the future. In Scala, we call that a future returns eventually.
The Future instance is a handle to an eventually available result. You can continue doing other work until the future completes, either successfully or unsuccessfully.
You may also know of Futures as Promises. It’s quite similar to async calls in .NET as well.