問題タブ [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 - ExecutorService:Callableが実行されているかどうかを確認する方法は?
を使用してExecutorService
複数のスレッドからのタスク要求を処理し、Future
から返されたを使用しExecutorService#submit()
てタスクの進行状況を追跡しています。
しばらくしてからリクエストがまったく処理されていない場合は、リクエストを削除して、リクエスターにフィードバックを送りたいと思います。
そのため、タスクリクエストが現在処理されているかどうかを知りたいのですが、処理されている場合は、タスクリクエストが完了するのを待つか、それ以外の場合はキャンセルしてリクエスターにフィードバックします。
ヘルプやヒントをいただければ幸いです。ありがとう!
timeout - Akka での Future のタイムアウト
ポートフォリオと証券 (その内部) を異なるアクターで処理するサーバーがあります。証券の数が少ない (<20) ポートフォリオの場合、これはうまく機能します。セキュリティ カウントの数を 1000 に増やすと、次の問題が発生しました。
akka.dispatch.FutureTimeoutException: [5000] ミリ秒後に先物がタイムアウトしました
akka config内のタイムアウトを増やすことでこのエラーを回避できますが、それは正しいことですか? 1.2 より前のバージョンの akka では、アクター内で self.timeout を設定できましたが、これは非推奨です。
私が (断続的に) 直面したもう 1 つの問題は、ポートフォリオ アクター内の futures.map コードに参加しているときにサーバー全体がハングすることです。
java - Callable 実行中の例外
私は次の Callable を持っています:
今、私はそれを実行しています:
コードのどこかで何らかの操作を実行するために、送信を一種の hashMap に保存しています。
worker.call()
関数で例外が発生したかどうかを知るにはどうすればよいですか?
submit.isCancelled()
何らかの例外が発生した場合は true を返し、すべてが正常に機能した場合は false を返しますか?
clojure - 実行せずに Clojure future を作成する
以下を含む基本的な Clojure スクリプトがあります。
ただし、ファイルを次のように実行すると:
すると画面いっぱいに「Running」と表示されます。未来が望むときに実行されるようにするにはどうすれば変更できますか?
注:これは永遠に実行されることを認識しています。これは私の問題の単なる例です。
concurrency - Guava ListenableFuture および Futures.chain() メソッドの使用方法
Guava 同時実行ライブラリの使用方法を学ぶ必要がある宿題があります。
タスクにはいくつかのスレッド プールがあり、それぞれが個別のオブジェクトによって制御されます。
各プールには、単純なタスクを実行するいくつかの作業スレッドがあり (ほとんどの場合、 を使用して何かThread.sleep(long)
をエミュレートします)、これらの単純なタスクはすべて、メッセージボードをエミュレートするコンテナー オブジェクトに格納されます。
各単純タスクには他のタスクの依存関係リストがあり、それらのタスクがすべて完了するまで実行できません。
ListenableFuture
とを使用して Guava ライブラリを利用するにはどうすればよいFutures.chain()
ですか?
オンラインで広範なサンプルコードを検索しましたが、使用方法を理解しているものは見つかりませんでした。
java - newFixedThreadPool が必要以上のタスクを作成する
N 個のスレッド (たとえば 50 個のスレッド) を作成するメソッドがあります。これらの作成されたスレッドは、 で新しいスレッドを作成しExecutors.newFixedThreadPool(20)
ます。その50 * 20 = 1000
ため、アプリケーションの実行中にスレッドが作成された可能性があります。しかし、実際の状況では、スレッド数は 10000 以上になる場合があります。これを修正する方法は?私は何を間違っていますか?
スレッドを作成して Future リストに追加するコードの一部を次に示します。
前後の画面は次のとおりです。
jboss - @Asynchronousメソッドの結果を待っているJBoss 6ソケットタイムアウト
非同期メソッドを含むステートレス EJB-3.1 セッション Bean があります。非同期メソッドは、高価な処理を行い、クライアントに未来を返します。これにより、準備ができたら処理結果を表示できます。
この Bean は JBoss 6 インスタンスで実行され、Swing クライアントからリモートで呼び出されます。
通常、処理は正常に終了しますが、一部の計算は終了までに 300 秒以上かかります。
これらの計算では、JBoss ソケット タイムアウトにより、クライアントは、termination.get() を呼び出したときに計算結果ではなく ExecutionException を受け取ります。
残念ながら、@Asynchronous アノテーションには構成オプションがありません。
私の質問は、クライアントサーバー通信ソケットのタイムアウトをどのように増やすことができるか、そして非同期メソッドの呼び出し中に確立された接続に対してのみ可能な場合です。
ありがとう、トーマス
java - ブロックせずに複数の先物リストを組み合わせるakka
この質問は、akka Futures に精通している方にはおそらく比較的基本的なものなので、ご容赦ください。
次の構造に従って akka アクターの階層があると仮定します。
そして、BigBoss 以外のそれぞれが Status ラッパーに内部状態を持っていると仮定します。
BigBoss がList<Status>
すべての子孫から を取得したい場合は、次の方法であることがわかります。
そして、最初のメッセージがワーカーにまで伝搬された後、ワーカーがマネージャーに次のように返信しているのがわかります。
マネージャーは、これらの多くが戻ってきて、それらを将来のリストとしてエグゼクティブのリストに入れたいと考えています。上記の返信は、次のものに対するものです。
上記のシーケンスは、最初に Future をFuture<List<Object>>
(実際にはステータスを含む) に変換します。
だから、これは私にとって少し毛むくじゃらになり始めるところです.
ExecutiveActor は次のようにしました。
それでは、最後に - 私の質問 -
BigBoss が最終的に Await を呼び出すまで、ブロックせずに上記
Future<Future<List<Object>>
を aに減らすにはどうすればよいですか?Future<List<Object>>
オブジェクトを使用するのではなく、これを通して Status タイプを保持する方法はありますか? UntypedActor が明示的な型指定された応答を送信できないことは知っていますが、おそらくこれを表現するよりクリーンな方法はありますか?
私が考えていない、これ以上のエレガントなアプローチはありますか? Sequence を使用するのが早すぎましたか、それともまったく使用すべきではありませんでしたか?
私は (明らかに) Java を使用しています - TypedActors を使用したくないのですが、すべてのフィードバックを歓迎します!
お時間をいただきありがとうございました-
asynchronous - 非同期 EJB を最大 X 秒待機
EJB
私は4秒を呼び出す「クライアント」を持っており、Asynchronous
EJB
実行するのに5秒すべてを与える必要があります。5 秒後、「クライアント」EJB は、Future
実行を終了したオブジェクトから準備完了の結果を収集し、出力を返します。
クライアント部分の「待機」に問題があります。タイムアウト後にfuture.get(5, TimeUnit.MILLISECONDS)
async が実行されることがあるようEJB
です。それを行う正しい方法はありますか?
Future
1)でオブジェクトを収集しMap
ます。
Future
2)次に、オブジェクトからタイムアウトで出力を取得します
ありがとうございました