Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のorTimeout()メソッドとcompleteOnTimeOut()メソッドの違いは?


両方のorTimeout() およびcompleteOnTimeOut() メソッドはCompletableFutureで定義されています クラスとこれらの2つのメソッドはJava9で導入されています。orTimeout() メソッドを使用して、特定のタスクが特定の期間内に完了しない場合、プログラムが実行を停止し、 TimeoutExceptionをスローするように指定できます。 一方、 completeOnTimeOut() メソッドはCompletableFutureを完了します 提供された値で。そうでない場合は、指定されたタイムアウトの前に完了します。

orTimeout()の構文

public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)

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;
      CompletableFuture.supplyAsync(() -> {
         try {
            TimeUnit.SECONDS.sleep(5);
         } catch(InterruptedException e) {
            e.printStackTrace();
         }
         return a + b;
      })
      .orTimeout(4, TimeUnit.SECONDS)
      .whenComplete((result, exception) -> {
         System.out.println(result);
         if(exception != null)
            exception.printStackTrace();
      });
      TimeUnit.SECONDS.sleep(10);
   }
}

出力

25


completeOnTimeOut()の構文

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

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;
      CompletableFuture.supplyAsync(() -> {
         try {
            TimeUnit.SECONDS.sleep(5);
         } catch(InterruptedException e) {
            e.printStackTrace();
         }
         return a + b;
      })
      .completeOnTimeout(0, 4, TimeUnit.SECONDS)
      .thenAccept(result -> System.out.println(result));
      TimeUnit.SECONDS.sleep(10);
   }
}

出力

25

  1. Javaのwait()メソッドとsleep()メソッドの違いは?

    sleep()メソッド 静的です スレッドの方法 クラスであり、現在実行中のスレッドを「実行不可」状態に送信できます 一方、 wait() メソッドはインスタンスメソッドであり、スレッドオブジェクトを使用して呼び出しており、そのオブジェクトに対してのみ影響を受けます。 sleep() 時間切れ後のメソッドウェイクアップまたはinterrupt()の呼び出し メソッド、 wait() 時間切れ後のメソッドウェイクアップまたはnotify()の呼び出し またはnotifyAll() 方法。 sleep() メソッドはロックまたはモニートを解放しません r待機中、 wait() メソッドは、待機

  2. JavaのcompareTo()メソッドとcompare()メソッドの違いは何ですか?

    同等 インターフェイスはcompareTo()を提供します オブジェクトの順序付けのためのメソッド。この順序はクラスと呼ばれます 自然順序付け およびcompareTo() この方法は、自然比較方法と呼ばれます。 。 コンパレータ インターフェイスは、並べ替え操作を実行するためのメソッドを提供します 。 コンパレータを使用する 複数の並べ替えシーケンスを実行できるインターフェース 。複数のデータメンバーに関してオブジェクトを並べ替えることができます。 compareTo() compareTo() メソッドはこのオブジェクトをo1オブジェクトと比較し、整数を返します 。 構文 publi