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

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

WBOY
WBOYavant
2023-08-27 22:53:041098parcourir

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>

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);
   }
}

Output

<strong>25
</strong>

completeOnTimeOut() La traduction chinoise de

<strong>public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)</strong>

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);
   }
}

sortie

<strong>25</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