This code given here explains how to return a custom FutureTask when you submit a Callable to an ExecutorService. This is helpful in the following cases:
To support Interruption-unfriendly task cancellation. java.net.Socket operations are notoriously oblivious to interruptions. Hence, tasks using Socket operations must support non-standard cancellation. (The best approach to do this is to
close()to Socket, forcing all of it's blocked methods to throw SocketException.
To return an identifier for Callable. Useful when Tasks are assigned ID's and could be used to track them.