Summary
In this chapter, you learned the different mechanisms that you can use to work with tasks that return a result. These tasks are based on the Callable
interface, which declares the call()
method. This is a parameterized interface with the class returned by the call
method.
When you execute a Callable
task in an executor, you will always obtain an implementation of the Future
interface. You can use this object to cancel the execution of the task, know if the task has finished its execution or get the result returned by the call()
method.
You send Callable
tasks to the executor using three different methods. With the submit()
method, you send one task, and you will get immediately a Future
object associated with this task. With the invokeAll()
method, you send a list of tasks and will get a list of Future
objects when all the tasks have finished its execution. With the invokeAny()
method, you send a list of tasks, and you will receive the result (not a Future
object) of the first task...