問題タブ [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 - Java 8はCompletableFuture::joinでストリームの順序を維持します
非同期で実行されるクエリの入力ストリームがあります。Completablefuture::join
を使用するときに、これらの要求の結果が入力クエリ ストリームの順序で収集されるようにしたいと考えています。
これは私のコードがどのように見えるかです:
SQLQueryEngine.execute(クエリ); を返すList<Results>
ため、出力はList<List<Result>
です。すべての結果を平坦化して 1 つのリストに結合したいと考えています。フラット化するコレクションの前に .flatMap(List::stream) を使用すると、順序が維持されますか?
java - オプションから> CompletableFutureへ>
Optional<CompletableFuture<T>>
に変換したいと思いCompletableFuture<Optional<T>>
ます。を使用しないより慣用的な方法はありOptional.get()
ますか?
java - Scala の未来から Java の Completable の未来へ
1 - Scala の将来から Java Completable の将来に移行するための lib または推奨事項はありますか?
API で先物を返す Scala ライブラリに適応させる必要があるレガシー システムがあります。
2 - また、threadPool executor 間の複雑さがどのように機能するのか疑問に思っていました。複雑さとは、従来の Java アプリから forkjoin 共通プールに取り組んでいることと、Scala lib に独自の ThreadPool エグゼキューターがあることを意味します。
この最後の質問は、スレッド プール エグゼキュータ間の通信がどのように行われるのか、私がいつも疑問に思っていることです。Javaでは、将来をいくらかポーリングしてキャンセルできるので、別のコンテキストからそれを行いますか。
java - CompletableFuture の実行時に OutOfScopeException をスローする Guice
リクエスト スコープ スレッドから、CompletableFuture
s はエグゼキュータで実行されているタスクによって完了する必要があります。提供されたサプライヤーは、MessageService
セッション スコープのドメイン固有のサービスを使用します。そのサービスは Guice によって注入されます。
には、注入されるMessageService
(セッション スコープ)があります。MessageRestClient
を注入しようとすると、Guice がトラブルに巻き込まれMessageRestClient
ます。
のメソッドについて読みましたServletScopes
:public static <T> Callable<T> transferRequest(Callable<T> callable)
しかし、Callables が機能しないため、これを使用する方法がわかりません。解決策を教えてください。
java - CompletableFuture: 最初のものが正常に戻るのを待っていますか?
私はいくつかCompletableFuture
の s を持っており、それらを並行して実行し、正常に戻る最初の s を待っています。
CompletableFuture.anyOf
最初に返されるのを待つために使用できることはわかっていますが、これは通常または例外的に返されます。例外を無視したい。
multithreading - CompletableFuturesに関連付けられているスレッド内から完了またはキャンセルされたことを通知する方法は?
私は CompletableFutures について多くのことを読んできましたが、CompletableFuture は Future のように基礎となる計算コードにアクセスできないという事実に焦点を当てています。では、completableFuture が関連付けられている任意のタスク内から、どうすれば complete() または cancel() を通知できますか (または、外部から計算を中断したい場合は isCancelled() を確認します)。
編集:私を混乱させることの1つは、CFが構成可能性または手動設定可能性のいずれかの代替手段よりも使用されていることです。
同時に「完成可能」+「構成可能」ではない方法で設計するポイントは何ですか?
CF が架空の CompletableCallable に似たインターフェイスを入力として使用したかのようにそれらを使用する方法を見つけたいのですが、方法がわかりません。Callables/Runnables の代わりのようなものなFunction<CompletableFuture,T>
ので、次のように使用できます。
コードが計算されるとき、まさに CF_REF_BIS 参照が、スコープ全体でアクセスする必要なく、将来の計算で実際に CF_REF として渡されるものとして、内部実行メカニズムによって返されます。
つまり、新しい CompeltableCallable() を作成し、任意のスレッドが CompletableFuture セマフォにアクセスできる任意の場所に n 回送信するだけで、計算コードを非匿名化して再利用できることを意味します。
例えば:
その必要性を達成する方法はありますか?私は何かを忘れていますか?私のアプローチに根本的な矛盾はありますか? Java CompletableFuture はまだ中途半端な便利な設計ですか?
java - CompletableFuture.allOf が CompletableFuture として宣言される理由?
結果のコレクションなどを返さないとCompletableFuture.allOf
宣言されているのはなぜですか? returnCompletableFuture<Void>
にするのは良い考えだと思いますが、これら2つのメソッドが接続されているので、それらが返すものについて混乱しています。CompletableFuture.anyOf
CompletableFuture<Object>