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

Java 9のCompletableFutureとFutureの違いは?


CompleteableFuture クラスはFutureを実装します Javaのインターフェース。 CompletableFuture 明示的に完了したFutureとして使用できます。 将来 インターフェースは多くの機能を提供していません。get()を使用して非同期計算の結果を取得する必要があります メソッドはブロックされているため、非ブロックで複数の依存タスクを実行する余地はありません ファッション、 CompleteFuture クラスは、非同期で実行される複数の依存タスクをチェーンする機能を提供できます。 、したがって、現在のタスクの結果が利用可能になったときに次のタスクがトリガーされる一連のタスクを作成できます。

構文
public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T>

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);
      CompletableFuture<Integer> future = CompletableFuture.supplyAsync(calc);
      future.thenAccept(result -> {
         System.out.println(result);
      });
      System.out.println("CompletableFutureTest End.... ");
      Thread.sleep(10000);
   }
}

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

  1. コレクションとJavaのコレクションの違いは?

    コレクション はインターフェースですが、コレクション ユーティリティです Javaのクラス。 セット、リスト、 およびキュー コレクションのサブインターフェイスの一部です インターフェース、マップ インターフェースもコレクションの一部です フレームワークですが、コレクションを継承しません インターフェース。 収集の重要な方法 インターフェースはadd()、remove()、size()、clear() などとコレクション クラスには静的のみが含まれます sort()、min()、max()、fill()、copy()、reverse()などのメソッド など コレクションインターフェイスの構文

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

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