問題タブ [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 投票する
11 に答える
5279 参照

java - 500 ワーカー スレッド、どのような種類のスレッド プール?

これがこれを行うための最良の方法かどうか疑問に思っています。無期限に実行される約 500 のスレッドがありますが、1 サイクルの処理が完了すると Thread.sleep が 1 分間発生します。

実行中のコードは非常に単純で、基本的にはこれだけです

実行中のタスクごとに個別のスレッドが必要なので、アーキテクチャを変更することはできません。threadPool のサイズを Runtime.getRuntime().availableProcessors() に等しくしようとしましたが、これは 500 個のスレッドすべてを実行しようとしましたが、そのうちの 8 個 (4xhyperthreading) しか実行できませんでした。他のスレッドは降伏せず、他のスレッドに順番を任せます。私はwait()とnotify()を入れてみましたが、まだうまくいきません。誰かが簡単な例やヒントを持っていれば、私は感謝しています!

うーん、デザインに欠陥があるのは間違いない。スレッドは、学習アルゴリズムの一種である遺伝的プログラミングまたは GP を実装します。各スレッドは、高度な傾向を分析して予測を行います。スレッドが完了すると、学習は失われます。そうは言っても、sleep() を使用すると、1 つのスレッドが「学習」していないときにリソースの一部を共有できるようになることを望んでいました。

したがって、実際の要件は

状態を維持して 2 分ごとに実行するタスクをスケジュールし、同時に実行するタスクの数を制御するにはどうすればよいですか。

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

java - thread.start()とexecutor.submit(thread)の違い

スレッドに関する問題に直面しています。runnableを実装するクラスがあり、そのクラスでthread.start()メソッドを使用できます。私の質問はjava.util.concurrent.ExecutorService、executor.submit(thread)を呼び出すことができるクラスがもう1つあるということです。

thread.start()との違いは何executor.submit(thread)ですか...

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

java - executorserviceがshutdown()の場合、実行中/ブロックされたランナブルはどうなりますか

今日、スレッドパターンについて質問を投稿しましたが、ほとんどの人がExecutorServiceを調べることを提案しました。

ExecutorServiceを調べていたところ、何かが足りないと思います。サービスに実行中またはブロックされたスレッドがあり、誰かがExecutorService.shutdown()を呼び出した場合はどうなりますか。実行中またはブロックされているスレッドはどうなりますか?

ExecutorServiceは、それらのスレッドが完了するのを待ってから終了しますか?

私がこれを尋ねる理由は、私がJavaに手を出したとき、Thread.stop()が非推奨になったためです。スレッドを停止する正しい方法は、必要に応じてsempahoresを使用してThreadを拡張することでした。

ExecutorServiceは実行中のスレッドをどのように処理しますか?

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

java - 中断されないスレッドを停止します

ObjectInputStreamからオブジェクトを配置して読み取るスレッドがあります。

readObjectはInterruptedExceptionをスローしません。私が知る限り、このスレッドが中断されても例外はスローされません。このスレッドを停止するにはどうすればよいですか?

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

java - ScheduledExecutorService を使用してタイマーを開始および停止する

私の読書から、ScheduledExecutorService は、Java でタイマーを開始および停止する正しい方法のようです。

タイマーを開始および停止するコードを移植する必要があります。これは定期的なタイマーではありません。このコードは、タイマーを開始する前に停止します。したがって、事実上すべての開始は実際には restart() です。ScheduledExecutorService を使用してこれを行う正しい方法を探しています。これが私が思いついたものです。私が見逃していることについてのコメントと洞察を探しています:

ティア、ルーブル

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

java - 呼び出し可能なスレッドに名前を付ける方法は?

ExecutorServiceスレッドプールを使用してCallableObjectを実行しています。このスレッドに名前を付けたいと思います。

より具体的には、古いバージョンではこれを行いました-

log4jロギングでスレッド名を使用しています。これは、トラブルシューティング時に非常に役立ちます。現在、コードをJava1.4からJava1.6に移行しています。私はこれを書きました(以下に与えられます)-しかし、私はこのスレッドに名前を付ける方法を知りません。

このスレッドに名前を付けるためのアイデアを教えてください。

0 投票する
16 に答える
226165 参照

java - ExecutorService、すべてのタスクが完了するのを待つ方法

のすべてのタスクが完了するのを待つ最も簡単な方法は何ExecutorServiceですか? 私のタスクは主に計算なので、各コアで 1 つずつ、多数のジョブを実行したいだけです。現在、私のセットアップは次のようになっています。

ComputeDTask実行可能を実装します。これにより、タスクが正しく実行されているように見えますが、コードは でクラッシュwait()IllegalMonitorStateExceptionます。おもちゃの例をいくつか試してみたところ、うまくいくように見えたので、これは奇妙です。

uniquePhrases数万の要素が含まれています。別の方法を使用する必要がありますか? できるだけシンプルなものを探しています

0 投票する
6 に答える
211486 参照

java - スレッドプールからスレッドIDを取得するにはどうすればよいですか?

タスクを送信する固定スレッドプールがあります(5スレッドに制限されています)。これらの5つのスレッドのどれが私のタスクを実行しているかをどのように見つけることができますか(「 5のスレッド#3がこのタスクを実行している」など)?

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

java - キューがいっぱいになると ThreadPoolExecutor がブロックされますか?

ThreadPoolExecutor を使用して多くのタスクを実行しようとしています。以下は架空の例です。

java.util.concurrent.RejectedExecutionException問題は、タスクの数が作業キューのサイズを超えているため、すぐに取得できることです。ただし、私が探している望ましい動作は、キューに空きができるまでメイン スレッドをブロックすることです。これを達成するための最良の方法は何ですか?

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

java - FutureTaskで例外をキャッチする方法

Java 1.6(およびEclipseから)でFutureTask実行するとメソッドの例外が飲み込まれることがわかった後、すべての実装にthrow/catchを追加せずにこれらをキャッチする方法を考え出そうとしました。Executors.newCachedThreadPool()Runnable.run()Runnable

FutureTask.setException()APIは、オーバーライドがこれに役立つはずであることを示唆しています。

このFutureがすでに設定されているかキャンセルされていない限り、このFutureは、指定されたthrowableを原因としてExecutionExceptionを報告します。このメソッドは、計算が失敗したときにrunメソッドによって内部的に呼び出されます。

ただし、このメソッドは呼び出されていないようです(デバッガーで実行すると、例外がによってキャッチされますが、FutureTask呼び出さsetExceptionれません)。問題を再現するために、次のプログラムを作成しました。

私の主な質問は、FutureTaskでスローされた例外をキャッチするにはどうすればよいですか?なぜsetException呼ばれないのですか?

Thread.UncaughtExceptionHandlerまた、なぜこのメカニズムが使用されていないのか知りたいのFutureTaskですが、理由はありますか?