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

Java9でのCompletableFutureAPIの改善点は何ですか?


CompleteableFuture APIは非同期に使用されます プログラミング Javaで。これは、ノンブロッキングを記述できることを意味します コード main()とは別のスレッドでタスクを実行する スレッド化してma​​in()に通知します その進行状況、完了、または失敗についてのスレッド。 Java 9では、 CompleteableFutureにいくつかの改善が導入されています。 API、 それらは、「タイムアウトと遅延のサポート」、「サブクラス化のサポートの改善」、「新しいファクトリメソッドの追加」です。

タイムアウトと遅延のサポート
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)

上記のメソッドは、プログラムが停止して TimeoutExceptionをスローする一定の時間内にタスクが完了しないかどうかを指定するために使用されています。 。

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

上記の方法でCompletableFutureが完成します 提供された値で。そうでない場合は、指定されたタイムアウトの前に完了します。

サブクラス化のサポートの改善
public Executor defaultExecutor()

上記のメソッドはデフォルトを返します エグゼキュータ エグゼキュータを表示しない非同期メソッドに使用されます。サブクラスでは、少なくとも1つの独立を与えるためにエグゼキュータを返すことがオーバーライドされる場合があります。 スレッド

public <U> CompletableFuture<U> newIncompleteFuture()

上記のメソッドは、新しい不完全なを返します CompletableFuture CompleteStageによって返される仕様の メソッド。

新しいファクトリメソッド
public static <U> CompletableFuture<U> completedFuture(U value)

上記のファクトリメソッドは、新しい CompleteableFutureを返します。 提供された値ですでに達成されています。

public static <U> CompletionStage<U> completedStage(U value)
上記のファクトリメソッドは新しいCompletionStageを返します これは、提供された値で以前に達成され、インターフェース CompletionStageで使用可能なメソッドとのみ互換性があります。 。


  1. Java 9のJShellで従う必要のあるルールは何ですか?

    Java 9 インタラクティブREPL( Read-Evaluate-Print-Loop )ツール: JShell 、そしてそれは私たちがコードスニペットを実行してすぐに結果を得るのを可能にします。 スニペット 標準のJava構文を使用できる命令です。単一の式、ステートメント、または宣言を表します。 以下は、JShellツールを使用する際に従う必要のあるルールの一部です。 JShellツールのルール: スニペットは、インポート宣言、クラス宣言、メソッド宣言、インターフェース宣言、フィールド宣言、ステートメント、およびプライマリ式のようなものです。 パッケージ 宣言は許可されていませ

  2. Java 9での@Deprecatedアノテーションの改善点は何ですか?

    @Deprecatedで注釈を付けることができる要素 この特定の要素が以下の理由で使用されなくなったことを意味します 使用するのは危険であり、エラーが発生する可能性があります。 将来のバージョンでは互換性がなくなる可能性があります。 将来のバージョンで削除される可能性があります。 より優れた、より効率的なソリューションがそれに取って代わりました。 Java 9には、次の2つの新しい要素が追加されています。以降 およびforRemoval 属性。 1)以降: この要素は、注釈付きAPI要素の非推奨バージョンを指定します。 2)forRemoval: 注釈付きのAPI要素を表す