FutureTask is the base implementation class of Future interface
and we can use it with Executors for asynchronous processing.
Most of the time we don’t need to use FutureTask class but it comes real handy
if we want to override some of the methods of Future interface and want to keep most of the base implementation.
We can just extend this class and override the methods according to our requirements.
https://www.digitalocean.com/community/tutorials/java-futuretask-example-program