問題タブ [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.

0 投票する
1 に答える
49 参照

java - スレッドを使用して巨大なファイルを分割する

5 億行を超えるテキスト ファイルがあり、次のように構成されています。

「緯度」と「経度」を指定すると、パスを返すメソッドを作成しています。巨大なファイルをセクション「sec0、sec1、sec2、sec3、...、secn」に分割し、セクションごとにその「lat」と「lon」を探すスレッドを作成し、スレッドがパス、他のスレッドは強制終了されます。

私の質問は、私のアプローチは有効ですか? そして、そのような問題の最適な解決策は何ですか。

0 投票する
0 に答える
822 参照

asynchronous - Spring Data Jpa および Java8 CompletableFuture を使用した findAll() での NonUniqueResultException

Jpa リポジトリを非同期にしようとしています。https://github.com/spring-projects/spring-data-examples/tree/master/jpa/java8を参照してください。

これが私のコードです:

しかし、テストを実行すると、NonUniqueResultException がスローされ、その理由がよくわかりません..完全なスタックトレースは次のとおりです。

私はJava8を初めて使用することを言及する必要があります。おそらく問題は、CompletableFutureを間違った方法で使用していることです。しかし、上記のリンクでは、テストは機能しており、私のものはほとんど同じです。

すべてのアイデアと提案を事前にありがとう!

PS: hibernate-entitymanager 5.0.0.Final、Spring 4.2.0.RELEASE、spring-data-jpa 1.8.2.RELEASE を使用しています。

0 投票する
2 に答える
2307 参照

java - 完了可能な将来の例外を別の例外タイプにマップしますか?

私は Java 8 の完了可能な先物を使用しています。未来によってスローされる例外を取得し、それを別の例外に変換できるようにしたいと考えています。

私が試したすべての複合的なものは、例外が発生すると短絡するようです。

たとえば、scala future を使用すると、次のようなことができます。

そして、Java の将来の複合ブロックでそれを模倣できるようにしたいと考えています。これは可能ですか?

0 投票する
2 に答える
434 参照

java - java.util.concurrent.CompletableFuture#allOf の目的は何ですか?

があればCollection<CompletableFuture<MyResult>>、これを に変換する予定CompletableFuture<Collection<MyResult>>です。したがって、変換後、未来は1つしかなく、のようなMyResultメソッドを使用してコレクションにビジネスロジックを簡単に書き込むことができますが、結果型があるため、呼び出した後に「結果がありません」。たとえば、(私が理解しているように) に対応する返された未来から結果を取得することはできません。CompletableFuturethenApplythenAcceptCompletableFuture#allOfVoidCollection<CompletableFuture<MyResult>>

CompletableFuture#allOf結局完成したFutureをコレクションに戻すだけなのか疑問です。だから私は呼び出しCompletableFuture#allOf(...).isDoneてからmanually (!)サイクルで に変換Collection<CompletableFuture>することができCompletableFuture<Collection>ます, 私の仮定は正しいですか?

0 投票する
1 に答える
1312 参照

java - どのようにSpringでCompletionStageを処理しますか?

CompletionStage戻り値の型で動作するように春を構成するにはどうすればよいですか? コードを考えてみましょう:

404 になりましたが、メソッドがトリガーされたことがログに表示されます。そのように署名を変更すると:

成功したjson配列が表示されます。

春の作品の作り方CompletionStage(4.2.RELEASE)は?

更新しました

テストのために、次のメソッドを作成しました。

そして、それは機能します。うーん

私は将来のこのバージョンをテストしました:

少しアグリーですが...うまくいきます!

したがって、私の元の方法には次のロジックがあります。

  1. コレクションを繰り返す
  2. コレクション要素ごとに AsyncRestTemplate を介して非同期呼び出しを行う
  3. コレクション内の各 CompletableFuture を呼び出す
    • thenApply(変換結果)
    • thenCompose(AsyncRestTemplate で新しい非同期呼び出しを行います)
    • thenApply(変換結果)
    • 最後に、ここで説明されているように、transform List を Completable に呼び出します。

フューチャートランスフォーメーションが間違っているようです。将来のチェーンが長すぎる可能性はありますか? 何か案は?

0 投票する
1 に答える
1290 参照

java - Java-8 CompletableFuture コールバック呼び出しの不当な遅延

最初のコールバック呼び出しは非常に高速で、残りは約 50 ミリ秒 (付加的でない) 遅れますが、その理由はわかりません。

出力:

編集:私をさらに驚かせる他のケース。CompletableFuture は問題ではないと思います。

この行を追加すると:

私はこの出力を取得しますが、変更はありません:

しかし、代わりに次の行を追加すると:

遅延がなくなりました!!

0 投票する
2 に答える
2609 参照

java - 完成可能なフテレスのリストをリストの完成可能な未来に変換する

インスタンスのリストがありCompletableFutureます。

次のように、それらを 1 つの未来に変換する方法は次のとおりです。

0 投票する
1 に答える
1039 参照

java - CompletableFuture バイトコードのシリアライズ

チェーンを作成し、CompletableFutureバイトコード/パラメーターとしてディスクにシリアル化し、将来のある時点で再度実行したいと思います。例えば:

もちろん、これで注意が必要なのは、バイトコードが現在のクラス ファイル ( で取得可能Class.getResource()) に格納されている場合でも、チェーンに設定された最終的な変数も永続化する必要があることです。
(上記の for ループを参照final int var = ii;)

将来の私の目標は、ほとんど同じクラス ファイル (チェーンを作成したクラス ファイルではない) を持つスレーブ プロセスでチェーンを実行することです。それを実行します。

前述のように、インスタンス化時にループで作成される最終的な vars は、これのトリッキーな部分だと思います。すなわち。 pos = pos.thenApply( (s)->{ return s+" plus"+val;} );

これを達成する方法について誰か提案がありますか?

0 投票する
1 に答える
4449 参照

java - 経過時間情報を持つ CompletableFuture

非同期メソッドの実行時間に関する情報にアクセスする必要があります。だから、私はCompletableFuture機能を拡張しようとしています。デコレータパターンを使用した私の実装は次のとおりです。

shouldReturnElapsedTime抽出されたContinuousCompletableFuture変数を使用した最初のテストは正常に機能しますが、他のテストはshouldOperateWithOwnExecutionTime失敗します。その間、私は将来のコードでもContinuousCompletableFuture変数を抽出しないでそれを見ることを好みます。

私の問題は、間違ったthenAcceptBothAsyncメソッドの使用にあると思います。

助言がありますか?