Middle
O que é FutureTask em Java?
sobes.tech IA
Resposta da IA
FutureTask — é uma classe que implementa as interfaces Runnable e Future, representando um cálculo assíncrono cancelável. Pode ser usada para envolver objetos Callable ou Runnable e sua execução posterior em uma thread.
Características principais:
Runnable: Pode ser passado para threads ou executores para execução.Future: Permite obter o resultado do cálculo, verificar seu status (isDone()), cancelá-lo (cancel()) e bloquear até sua conclusão (get()).- Flexibilidade: Pode ser usado tanto para envolver
Runnableexistentes quanto para executar operações que retornam um resultado (Callable).
Exemplo de uso:
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.ExecutionException;
// Tarefa que retorna um resultado
Callable<Integer> myCallable = () -> {
// Execução de uma operação prolongada
Thread.sleep(1000);
return 42;
};
// Envolvendo Callable em FutureTask
FutureTask<Integer> futureTask = new FutureTask<>(myCallable);
// Criando uma thread para executar a tarefa
Thread thread = new Thread(futureTask);
// Iniciando a thread
thread.start();
try {
// Obtendo o resultado (bloqueia até a conclusão)
Integer result = futureTask.get();
System.out.println("Resultado: " + result); // Resultado: 42
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
// Verificando o status
System.out.println("Tarefa concluída: " + futureTask.isDone()); // Tarefa concluída: true