Maison  >  Article  >  Java  >  Quelle est la différence entre CompletableFuture et Future dans Java 9 ?

Quelle est la différence entre CompletableFuture et Future dans Java 9 ?

WBOY
WBOYavant
2023-08-18 16:17:121001parcourir

La classe

CompletableFuture8742468051c85b06f0a0af9e3e506b5c implémente l'interface Future8742468051c85b06f0a0af9e3e506b5c CompletableFuture peut être utilisé comme un futur explicitement complété. L'interface Future ne fournit pas beaucoup de fonctions. Nous devons utiliser la méthode get() pour obtenir les résultats du calcul asynchrone. Cette méthode sera bloquée, il n'y a donc aucun moyen d'exécuter plusieurs tâches dépendantes dans un non. -blocking, et La classe CompletableFuture peut fournir la fonction d'exécuter plusieurs tâches dépendantes dans une chaîne. Ces tâches s'exécutent de manière asynchrone, nous pouvons donc créer une chaîne de tâches qui déclenche la tâche suivante lorsque les résultats de. la tâche en cours sont disponibles. Grammaire

<strong>public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T></strong>

Exemple

traduit en chinois par :

Exemple

import java.util.function.Supplier;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class CompletableFutureTest {
   public static void main(String args[]) throws ExecutionException, InterruptedException {
      Calculator calc = new Calculator(4, 7);
      <strong>CompletableFuture<Integer></strong> future = CompletableFuture.<strong>supplyAsync</strong>(calc);
      future.<strong>thenAccept</strong>(result -> {
         System.out.println(result);
      });
      System.out.println("CompletableFutureTest End.... ");
      Thread.sleep(10000);
   }
}

<strong>// Calculator class</strong>
class Calculator implements <strong>Supplier<Integer></strong> {
   private int x, y;
   public Calculator(int x, int y) {
      this.x = x;
      this.y = y;
   }
   <strong>@Override</strong>
   public Integer get() {
      try {
         Thread.sleep(3000);
      } catch(InterruptedException e) {
         e.printStackTrace();
      }
      return x + y;
   }
}

Sortie

<strong>CompletableFutureTest End....
11</strong>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer