Sobes.tech
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