FutureTask é uma implementação da interface Future a ser executada numa chamada em paralelo. Sendo possível cancelar a execução de uma tarefa, descobrir se a execução já terminou com sucesso ou erro, entre outras operações.
A FutureTask precisa de uma interface para a implementação de uma execução em paralelo. a Callable é parecida com a interface Runnable, mas esta não retorna nenhum valor, enquanto a Callable deve retornar um valor ao final da execução;
MÉTODOS DO FUTURE:
future.cancel(boolean mayInterruptIfRunning) : Cancela o processamento, passar true para interromper se ela ja está iniciada, ou false para cancelar se ainda nao foi iniciada.
future.get(long timeout, TimeUnit unit) : Espera a resposta da execução de acordo com timeout.
future.get() : Espera a resposta da execução.
future.isDone() : Verifica se a execução já acabou.
future.isCancelled() : Verifica se o processamento foi cancelado.
Exemplo: