36

フレームワークを使用する Java アプリケーションがありExecutor、次のようなコードがあります。 protected ScheduledExecutorService scheduledExecutorService = new ScheduledThreadPoolExecutor(5)

私の理解では、JVM は内部的に 5 つのスレッドのプールを作成します。プロファイラーで実行を確認すると、次のような結果が得られthread-pool2,thread-pool3ます。

Some of these thread pools are created by the server and some are created by me私が作成したものとサーバーが作成したものを区別する方法が必要です

スレッドプールに名前を付けることができればうまくいくはずですが、同じことを可能にするAPIは見当たりません。

前もって感謝します。

4

4 に答える 4

48

独自のThreadFactoryScheduledThreadPoolExecutorに渡すことができます。ThreadFactory はスレッドを作成し、任意の名前を付けることができます。ThreadFactory はExecutors.defaultThreadFactory()を再利用することもでき、スレッドを返す前に名前のみを変更できます。

于 2011-04-21T06:45:26.787 に答える
9

ThreadPoolExecutor のドキュメントから:

新しいスレッドの作成 新しいスレッドは、ThreadFactory を使用して作成されます。特に指定されていない場合、Executors.defaultThreadFactory() が使用され、すべてのスレッドが同じ ThreadGroup 内に作成され、同じ NORM_PRIORITY 優先度と非デーモン ステータスになります。別の ThreadFactory を指定することで、スレッドの名前、スレッド グループ、優先度、デーモン ステータスなどを変更できます。タスクを実行します。

于 2011-04-21T06:47:54.033 に答える