0

システム プログラミング コースの課題 (スレッドを使用) をプログラミングしています。

私のアクティブなクラスは runnable を実装しています。ThreadPoolExecutor e = (ThreadPoolExecutor) Executors.newFixedThreadPool(number);

そのスレッド プールで同時に複数のスレッドを実行しています。私の質問は次のとおりです: 1 つのスレッドが何をする必要があるかについてジョブをいつ終了したかを知るオプションがあります。このスレッドをシャットダウンするにはどうすればよいですか?

4

2 に答える 2

1

ThreadPoolExecutorはそのスレッドの管理を担当しており、エグゼキューターを壊す可能性のあるいくつかの醜いハックを除いて、それらにアクセスする方法はありません。使用する必要があるのは、API によって提供される構成オプションです。たとえば、setKeepAliveTimeまたは を受け入れるコンストラクターですkeepAliveTime。これをゼロに設定すると、必要な動作が自動的に得られます。

于 2012-12-18T09:39:48.980 に答える
0

私がそれを正しく理解していれば、あなたが望むのはnewCachedThreadPool代わりにnewFixedThreadPool

Java ドキュメントから

必要に応じて新しいスレッドを作成するスレッド プールを作成しますが、以前に構築されたスレッドが利用可能になった場合はそれらを再利用します。これらのプールは通常、多くの短命の非同期タスクを実行するプログラムのパフォーマンスを向上させます。execute の呼び出しは、利用可能な場合、以前に構築されたスレッドを再利用します。既存のスレッドが利用できない場合、新しいスレッドが作成され、プールに追加されます。60 秒間使用されなかったスレッドは終了され、キャッシュから削除されます。したがって、アイドル状態が十分に長く続くプールは、リソースを消費しません。プロパティは似ているが詳細 (タイムアウト パラメータなど) が異なるプールは、ThreadPoolExecutor コンストラクタを使用して作成できることに注意してください。

于 2012-12-18T09:46:24.273 に答える