Future and FutureTask
Future and FutureTask in Java allows you to write asynchronous events,
Callable is similar to Runnable, but it can return result unlike Runnable. Callable can be in one of three states: waiting to run, running, or completed.
Future : is a general concurrency abstraction, also known as a promise, which promises to return a result in future; i.e; a Future represents the result of an asynchronous computation.