1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public static Future<String> method() {
/*
* On crée un objet FutureTask, qui représente notre tâche via un Callable.
* Ce dernier à l'avantage de proposer un type de retour paramétrable,
* et de renvoyer des exceptions :D
*/
FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
@Override
public String call() throws Exception {
// On simule un traitement :
Thread.sleep(5000);
return "Super";
}
});
/*
* On lance un thread associé à cette tâche.
*/
new Thread(task, "MyThread").start();
/*
* On retourne la tâche en tant qu'objet "Future".
* Cela nous permettra :
* - D'interrompre la tâche : cancel(true)
* - De connaitre son état : isDone() / isCancelled()
* - De récupérer le resultat : get()
*/
return task;
} |