Middle
Wat is FutureTask in Java?
sobes.tech AI
Antwoord van AI
FutureTask — is een klasse die de interfaces Runnable en Future implementeert en een afbreekbare asynchrone berekening voorstelt. Het kan worden gebruikt om Callable- of Runnable-objecten te omhullen en deze vervolgens in een thread uit te voeren.
Belangrijkste kenmerken:
Runnable: Kan worden doorgegeven aan threads of uitvoerders voor uitvoering.Future: Maakt het mogelijk om het resultaat van de berekening te verkrijgen, de status te controleren (isDone()), te annuleren (cancel()) en te blokkeren tot voltooiing (get()).- Flexibiliteit: Kan worden gebruikt om bestaande
Runnable-objecten te omhullen of voor het uitvoeren van operaties die een resultaat teruggeven (Callable).
Voorbeeld van gebruik:
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.ExecutionException;
// Taak die een resultaat teruggeeft
Callable<Integer> myCallable = () -> {
// Uitvoeren van een langdurige operatie
Thread.sleep(1000);
return 42;
};
// Wrappen van Callable in FutureTask
FutureTask<Integer> futureTask = new FutureTask<>(myCallable);
// Een thread maken om de taak uit te voeren
Thread thread = new Thread(futureTask);
// Thread starten
thread.start();
try {
// Resultaat verkrijgen (blokkeert tot voltooiing)
Integer result = futureTask.get();
System.out.println("Resultaat: " + result); // Resultaat: 42
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
// Status controleren
System.out.println("Taak voltooid: " + futureTask.isDone()); // Taak voltooid: true