問題タブ [executorservice]

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 投票する
2 に答える
886 参照

java - java.util.concurrent

Runnableクラスのrunメソッドを開始しようとしていますが、NullPointerExceptionが発生し続けています。また、WebSpherecommonj.workmanagerを使用してexecutorServiceのインスタンスを取得しています。これはimが使用しているコードです。

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

java - Java fixedThreadPool を複数のスレッドで使用できますか

結果を返す前に複数の小さな計算を行う Web サービスがあります。ExecutorServiceマスター - ワーカー パターンを実装する方法として提供されたを使用したいExecutors.newFixedThreadPool()(つまり、呼び出しinvokeAllて、すべての結果が終了するまでスレッドを待機させる)。理想的には、すべての Web サービス スレッドが同じエグゼキュータ サービスを使用して、すべてが独自のスレッド プールを作成する必要がなく、システムのすべての処理時間を消費する 1 つの大きなプールを共有できるようにします。

このアプローチに関する質問:

  • invokeAll複数のスレッドから関数にアクセスしても安全ですか。
  • エグゼキュータ サービスはリクエストを順番に処理しますか (つまり、最初にスレッド 1 のすべてのタスクを処理し、次にスレッドのタスクを処理します)。
  • 10 個のワーカー スレッドを使用し、受信する要求の数に応じて使用可能なスレッドの最大数を設定する方法はありますか。つまり、1 つの要求があるとします。その要求に対して 10 個のスレッドすべてが使用されます。2 つのリクエストがある場合、リクエストごとに 5 つのスレッドに分割されます。
0 投票する
3 に答える
4792 参照

java - 単一のタスク エグゼキューターがタスクの処理を停止するのはどのような場合ですか?

java.util.concurrent.ExecutorServiceを呼び出して取得した を使用していExecutors.newSingleThreadExecutor()ます。これExecutorServiceにより、シャットダウンされておらず、例外をスローすることなく新しいタスクを受け入れ続けている場合でも、タスクの処理が停止することがあります。OutOfMemoryError最終的に、アプリが例外でシャットダウンするのに十分な数のキューが構築されます。

ドキュメントは、このシングル スレッド エグゼキュータは、必要に応じて新しいワーカー スレッドを起動して、停止したスレッドを置き換えることにより、タスク処理エラーを乗り切る必要があることを示しているようです。何か不足していますか?

0 投票する
7 に答える
119033 参照

java - JavaタイマーとExecutorService?

を使用してタスクをスケジュールするコードがありますjava.util.Timer。私は周りを見回してExecutorServiceいて、同じことができるのを見ました。ここでの質問ですが、タスクをスケジュールするためTimerに とを使用したことがありますか?ExecutorService

Timerまた、誰かがクラスを使用して、解決した問題に遭遇したかどうかを確認したいと考えていExecutorServiceました。

0 投票する
5 に答える
4323 参照

java - Generic Asynchronous Java Job Execution Framework / Libraryの検索

Callables またはsを処理できる一般的な非同期 Java ジョブ実行フレームワークを探していますRunnablejava.util.concurrent.ExecutorService, (およびおそらく wrap )に似てExecutorServiceいますが、次の機能も備えています。

  1. ジョブの処理中にアプリケーションがダウンした場合にジョブをデータベースに保持し、未完了のジョブを再開できる機能。(私の仕事は実装する必要があるかもしれないことを理解していSerializableます。)

  2. UUID を使用して、クライアントがジョブ トークンを取得し、ジョブ ステータスを照会できるようにします。(内部では、この情報はデータベースにも保持されます。)

私は を中心に構築することで自分自身でこれに取り組み始めましExecutorServiceたが、すぐに使用できるオープン ソース ソリューションがあればそれを使用したいと思います。

Spring Framework 内で機能するものが理想的です。

0 投票する
8 に答える
118788 参照

java - Executors.newCachedThreadPool()とExecutors.newFixedThreadPool()

newCachedThreadPool()newFixedThreadPool()

いつどちらを使うべきですか?リソース使用率の観点から、どちらの戦略が優れていますか?

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

java - Java 5:java.util.concurrent.FutureTask-cancel()およびdone()のセマンティクス

私は現在、FutureTasksとExecutorsを使用して、マルチスレッド環境で厄介なバグを探しています。基本的な考え方は、固定数のスレッドに、テーブルに表示される結果を計算する個々のFutureTasksを実行させることです(ここではGUIの側面を気にしないでください)。

私はこれを長い間見てきました、私は自分の正気を疑うようになり始めています。

このコードを考えてみましょう。

MyTaskdone()のインスタンスを処理するエグゼキュータによって呼び出された場合、タスクがキャンセルされたため、そこに到達したかどうかを確認します。もしそうなら、私は残りのすべての活動をスキップします、特に私は電話しませんsendMessage()

FutureTask.done()のドキュメントには次のように書かれています。

このタスクが状態isDoneに遷移するときに呼び出される保護されたメソッド(通常またはキャンセルを介して)。デフォルトの実装は何もしません。サブクラスは、このメソッドをオーバーライドして、完了コールバックを呼び出したり、簿記を実行したりできます。このメソッドの実装内でステータスを照会して、このタスクがキャンセルされたかどうかを判断できることに注意してください。(APIリファレンス

しかし、のドキュメントから得られないのは、実行FutureTaskのセマンティクスです。最初にチェックに合格したが、その直後に他のスレッドが私のメソッドを呼び出した場合はどうなりますか?それは私の仕事の考えを変え、それ以降に返信する原因になりますか? done()isCancelled()cancel()isCancelled() == true

もしそうなら、メッセージが送信されたかどうかを後でどうやって知ることができますか?見てみるisDone()と、タスクの実行が終了したisCancelled()ことがわかりますが、そのときもそうであったように、メッセージを時間内に送信できるかどうかはわかりませんでした。

たぶんこれは明らかですが、私は今それを実際には見ていません。

0 投票する
27 に答える
384903 参照

java - ExecutorServiceを使用して、すべてのスレッドが終了するのを待つ方法は?

次のように、一度に4つのタスクを実行する必要があります。

それらがすべて完了したら、どうすれば通知を受け取ることができますか? 今のところ、いくつかのグローバル タスク カウンターを設定し、すべてのタスクの最後にそれを減らし、無限ループでこのカウンターが 0 になるのを監視する以外に良いことは考えられません。または、Future のリストを取得し、それらすべてについて無限ループ モニター isDone を取得します。無限ループを含まないより良い解決策は何ですか?

ありがとう。