問題タブ [completable-future]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 「flatMap」と同等のJavaマルチネストされたCompletionStage?
したがって、次の例があると考えてください。
CompletionStage<CompletionStage<CompletionStage<CompletionStage<Boolean>>>>
私の問題は、複数のネストされた未来型全体にあります。CompletionStage<Boolean>
Scalaのようなものを使用するだけでそれを減らすことは可能flatMap
ですか、それとも別の方法がありますか?
java - JavaEE アプリサーバーの CompletableFuture/parallelStream
新しい Java8 では、CompletableFuture や .parallellStream() など、非同期タスク用の非常に優れた機能を利用できます。これを Java SE で実行すると、ForkJoinPool を利用することになりますが、Wildfly や TomcatEE などで次の例を実行するとどうなりますか?
何が起こり、どこからリソースを借りますか
- 例は @Stateful Bean で実行されます
- 例は @Stateless Bean で実行されます
- サンプルは CDI Bean で実行されます
java-8 - 条件が達成された場合にのみ複数の CompletionStage をチェーンする
CompletionStage
連鎖させたいメソッドがいくつかあります。問題は、最初のものの結果によって、次のものを実行する必要があるかどうかが決まることです。現在、これを達成する唯一の方法は、「特別な」引数を next に渡すことであるように思われるCompletionStage
ため、完全なコードは実行されません。例えば:
コード全体が最初のものに依存するためsomeCondition
(そうでない場合false
は結果が になりRESULT_1
、そうでない場合はコード全体を実行する必要があります)、この構造は私には少し見苦しく見えます。2 番目 ( thenCompose(...)
) と 3 番目 ( thenApply(...)
) のメソッドを実行するかどうかを決定する方法はありますか?
java - runAsync 呼び出しの後に連鎖すると、(thenRun とは対照的に) thenRunAsync は違いますか?
次のコードでは、thenRunAsyncを呼び出しても違いはありますか? 代わりにthenRunを呼び出す必要がありますか?
コメントに応じて詳しく説明します。代わりにこのコードを使用すると、
それは何か違う振る舞いをしますか?
どちらの場合も、動作は非ブロックであり、2 番目のタスクは最初のタスクが完了するまで実行されません。
java - CompletableFuture.get() の使用中に CompletableFuture.completeExceptionally() からスローされた例外をキャッチする方法は?
CompletableFuture.get() の使用中に CompletableFuture.completeExceptionally() からスローされた例外をキャッチする方法は?
ここにいくつかのコードがあります
これは非常に醜いです。繰り返しますが、可能な限り数行のコードで、可能な限りクリーンな方法で MyException をキャッチしたいだけです。isCompletedExceptionally()、例外的に、join() が MyException を可能な限り簡単な方法でキャッチするのに役立つかどうかはわかりません。もしそうなら、どのように?
java-8 - Java 8 CompletableFuture.thenApply()
最後に、Java 8 で CompletableFuture dealio をいじっています。(IDE で) よくわからないコンパイル エラーが発生します。
List<String>
URL に追加し、各 URL を非同期的に呼び出したい識別子がいくつかあります。これまでのところ、これらのカップルの方法しかありません。
私が得ているコンパイルエラーはthis::sendRequest
、最初のメソッドの部分にあります。私のクラスがsendRequest(Object)
メソッドを定義していないと不平を言っています。
しかしidentifiers
、ラムダ表記で型を呼び出すことについて心配する必要はないと入力することで、私は考えましたか? ::
演算子で型を指定する方法さえわかりません。::
たぶん私は演算子を使うべきではありませんか?よくわかりません。
lambda - CompletionStage を使用して結果を返す
フレームワークとJava8をプレイするのは初めてです。Asynch モデルに準拠し、Web サービスの呼び出しが迅速に返されるようにする単純な Web サービスを Play で作成しようとしています。
私は非常に基本的な操作をしています
呼び出しの実際の処理では、データベースから個人データをロードする必要があります。デブメソッドは
dbMethod 自体は非同期で、CompletionStage> を返します。
したがって、私の問題は、メソッドがブロックしないようにWebサービスをプログラムする最善の方法を理解できないことです。
ハンドラーでこのようなことができます
これの問題は、controllerが「get」メソッドでブロックし、標準のtry-catchブロックを使用する以外に処理方法がわからない例外をスローすることです(これにより、非同期にもなります)。
私もこのようなことを試しました
しかし、それはコンパイルエラーを引き起こします。
ここで助けていただければ幸いです。私はJava非同期プログラミングに非常に慣れていないため、多くのチュートリアルを読んだにもかかわらず、これらを最適に使用する方法が不明です.
皆さん、ありがとうございました。