Maison > Java > javaDidacticiel > le corps du texte

Quelle est la différence entre la méthode orTimeout() et la méthode completeOnTimeOut() dans Java 9 ?

WBOY
Libérer: 2023-08-27 22:53:04
avant
1089 Les gens l'ont consulté

Les méthodes

Java 9中orTimeout()方法和completeOnTimeOut()方法之间的区别是什么?

orTimeout() et completeOnTimeOut() sont toutes deux définies dans la classe CompletableFuture . Ces deux méthodes ont été introduites dans Java 9. La méthode orTimeout() peut être utilisée pour spécifier que si une tâche donnée n'est pas terminée dans un délai précis, le programme arrête l'exécution et renvoie une TimeoutException strong> tandis que la méthode completeOnTimeOut() est terminée à l'aide de la méthode fournie. valeur CompletableFuture. Sinon, l'exécution se terminera avant le délai imparti. La traduction chinoise de la syntaxe

orTimeout()

<strong>public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)</strong>
Copier après la connexion

Example

est :

Example

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class OrTimeoutMethodTest {
   public static void main(String args[]) throws InterruptedException {
      int a = 10;
      int b = 15;
      <strong>CompletableFuture</strong>.supplyAsync(() -> {
         try {
            TimeUnit.SECONDS.sleep(5);
         } catch(InterruptedException e) {
            e.printStackTrace();
         }
         return a + b;
      })
      .<strong>orTimeout</strong>(4, TimeUnit.SECONDS)
      .<strong>whenComplete</strong>((result, exception) -> {
         System.out.println(result);
         if(exception != null)
            exception.printStackTrace();
      });
      TimeUnit.SECONDS.sleep(10);
   }
}
Copier après la connexion

Output

<strong>25
</strong>
Copier après la connexion

completeOnTimeOut() La traduction chinoise de

<strong>public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)</strong>
Copier après la connexion

Example

est :

Exemple

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class CompleteOnTimeOutMethodTest {
   public static void main(String args[]) throws InterruptedException {
      int a = 10;
      int b = 15;
      <strong>CompletableFuture</strong>.supplyAsync(() -> {
         try {
            TimeUnit.SECONDS.sleep(5);
         } catch(InterruptedException e) {
            e.printStackTrace();
         }
         return a + b;
      })
      .<strong>completeOnTimeout</strong>(0, 4, TimeUnit.SECONDS)
      .<strong>thenAccept</strong>(result -> System.out.println(result));
      TimeUnit.SECONDS.sleep(10);
   }
}
Copier après la connexion

sortie

<strong>25</strong>
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal