問題タブ [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 に答える
302 参照

java - Java Future と無限計算

(無限の) 計算アルゴリズムを最適化しようとしています。

計算する無限の Sum があります ( Summ_{n-> infinity} (....) ) 私の考えは、 Future < > 構造を使用して複数のスレッドを作成し、中間結果を結合することでした。私の問題は、ある程度の精度が必要だということです。したがって、他のスレッドが計算を続けている間、常に現在の結果を計算する必要があります。

私の質問は次のとおりです。終了した各スレッドがその結果を入れることができる何らかの結果キューがありますか?

どんな助けでも本当に感謝します! ありがとう!

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

java - Java マルチスレッド アプリ - Futures オブジェクトを動的にキャンセルする方法

これはマルチスレッド Java アプリケーションの一般的なシナリオだと思うので、ここで説明します。

私の Java アプリには、 5 つのスレッドのプールを定義するthreadExecutorオブジェクトがあります。

sendCallablesメソッドは、ジョブのリストを Executor に割り当てる責任がありますObjectXを使用してList
追跡します。このようにして、ユーザーがスレッドを中断/キャンセルしたい場合に、Future のリストを参照することができます。このようなもの:

ここまでは順調ですね。

提出されたタスクを実行する必要がなくなった場合があります。
このような状況では、タスクをキャンセルする決定は、アプリケーションによってインテリジェントに/自動的に行われる必要があります。
このようなケースの例は、ユーザーのセッションが期限切れになったとき、またはすべてのジョブが実行される前に特定のフロー (送信されたタスクに関連する) が終了したときの Web アプリケーションで見つけることができます。

したがって、基本的に、アプリケーションがジョブを実行し続ける意味がない場合は、毎回 cancelFutures(referenceObj) を呼び出す必要があります。アプリケーションがそれを呼び出す必要がある場合は、それぞれの状況を特定する必要があります。

これを行うためのより良いアプローチがあるかどうか疑問に思っています。

アプリケーションによって referenceObj が参照されなくなったら、 WeakHashMapでマップをクリーンアップできるように考えていましたが、まだ .cancel() を呼び出す必要があるため、Future の実行を停止しません (一種のWeakHashMap remove(Object) メソッドに関連付けられた eventHandler ? )

0 投票する
4 に答える
24711 参照

java - java.util.concurrent.Future.get()が返されない

私は次のJavaコードを持っています:

exeServiceのインスタンスはどこですか

問題は、myObject.doSomething()二度と戻らないことです。したがって、future.get()二度と戻らないということです。

submitただし、への呼び出しを次のような呼び出しに置き換えると、execute次のようになります。

の呼び出しmyObject.doSomething()は戻ります。それが重要かどうかはわかりませんdoSomething()が、void方法です。

使用時に終了するのに、使用しないときにdoSomething()終了するのはなぜですか?executesubmit

また、使用する必要はありませんFuture.get(); それがこれを行う最も自然な方法のように思えました。(私も同じ問題に遭遇しCountdownLatchます。)要点は、先に進む前に終了するのを待つ必要があるということです。doSomething()複雑な理由から、ここでは説明しません。別のスレッドで起動する必要があります。これを行う別の方法が機能する場合は、それで問題ありません。

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

java - CompletionService.take()。isDone()は常にtrueですか?

それを仮定するのは安全ですか

常にtrueを返しますか?もしそうなら、なぜtake()は値を直接返すのではなく、Futureを返すのですか?そうでない場合、ドキュメントで使用されている「完了したタスク」とはどういう意味ですか?

0 投票する
3 に答える
65559 参照

java - Future.get()はどのような場合にExecutionExceptionまたはInterruptedExceptionをスローしますか

私のコードスニペット:

InterruptedExceptionコード内でとをどのように処理する必要がExecutionExceptionありますか?

そして、どのような場合に、これらの例外がスローされますか?

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

java - 将来/スレッドを理解する

初めて先物を使おうとしています。ジョブをキャンセルできるのは賢いようですが、期待どおりに機能していません。以下の例では、最初のジョブのみがキャンセルされます。残りは完了です。先物の使い方を誤解していませんか?

出力:

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

c++11 - c++0xの先物に関する問題

先物がc++0xでどのように機能するかを理解するために、小さなプログラムを作成しました。コードの実行中に、「エラー:'printEn'はこのスコープで宣言されていません」のようなエラーが発生します。私は問題が何であるかを理解することができません..ここで私が間違っていることを親切に指摘し、可能であれば同じための正しいコードを書いてください..

編集 :

プログラムの実行中にprintFnに変更を加えた後、「バージョン `GLIBCXX_3.4.14'が見つかりません(./a.outで必要)」というエラーメッセージが表示されます。これは何を示していますか?

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

java - java.util.concurrent.Future に矛盾がありますか?

Future議論のために、キャンセルできないタスクを実装しているとしましょう。Java 6 API docは次のように述べています。

[ cancel()] が返された後、後続の への呼び出しisDone()は常に を返しtrueます。

[ ] は、通常、タスクが既に正常に完了しているため、タスクをキャンセルできなかった場合にcancel()返されますfalse

また、次のようにも述べています。

[ ] は、このタスクが完了した場合isDone()に返されます。true

しかし、タスクが既に完了しているからではなく、単にキャンセルできないためにキャンセルが失敗した場合はどうなるでしょうか? この矛盾から抜け出す方法はありますか (キャンセルできないタスクをキャンセル可能にし、それを完全に回避する以外に)?

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

scala - forkjoinpool にスレッドを追加するにはどうすればよいですか

私は最近、Scala フューチャの実験に成功しました。並列処理によって得られた利益には非常に満足していますが、ワーカー スレッドは 4 つしかありません。

どうすればスレッド数を 11 に増やすことができるかをずっと探していましたが、うまくいきませんでした。これどうやってするの?

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

java - Java Futures が「提出される」注文を制御する方法は?

この例では、いくつかのファイルをコンパレータ オブジェクトに送信しています。ファイルが送信される順序が常に同じ順序で返されるとは限らないことに気付いたことを除いて、すべて正常に動作します。これをより適切に制御する方法について何か提案はありますか?