Explication
1. La classe FutureTask implémente non seulement l'interface Future mais implémente également l'interface Runnable, qui représente un Runnable pouvant générer des résultats.
2. La classe FutureTask implémente les méthodes de démarrage et d'annulation de tâches de l'interface Future, demandant si la tâche est terminée et obtenant les résultats des calculs.
Pour obtenir les résultats de la tâche FutureTask, nous ne pouvons l'obtenir qu'en appelant la série de méthodes getXXX(). Ces méthodes seront bloquées lorsque les résultats ne seront pas encore sortis. En même temps, la tâche peut être bloquée. Type appelable (avec résultats renvoyés) ou Est un type Runnable (aucun résultat renvoyé).
Instances
private static void testFutureTask() throws ExecutionException, InterruptedException { System.out.println("-------------------- testFutureTask --------------------"); // 创建一个 FutureTask(doOneThing 任务) FutureTask<String> futureTask = new FutureTask<>(FutureTaskDemo::doOneThing); // 使用线程池执行 doOneThing 任务 ForkJoinPool.commonPool().execute(futureTask); // 执行 doOtherThing 任务 String doOtherThingResult = doOtherThing(); // 同步等待线程执行 doOneThing 任务结束 String doOneThingResult = futureTask.get(); // 任务执行结果输出 System.out.println("doOneThingResult ---->>> " + doOneThingResult); System.out.println("doOtherThingResult ---->>> " + doOtherThingResult); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!