web-dev-qa-db-ja.com

Javaでスレッドプールのスレッドに名前を付ける方法

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が表示されません。

前もって感謝します。

34
Sudarshan

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

47
public class NamedThreadPoolExecutor extends ThreadPoolExecutor {

private static final String THREAD_NAME_PATTERN = "%s-%d";

    public NamedThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, final TimeUnit unit,
                               final String namePrefix) {
       super(corePoolSize, maximumPoolSize, keepAliveTime, unit, new LinkedBlockingQueue<>(),
            new ThreadFactory() {

                private final AtomicInteger counter = new AtomicInteger();

                @Override
                public Thread newThread(Runnable r) {
                    final String threadName = String.format(THREAD_NAME_PATTERN, namePrefix, counter.incrementAndGet());
                    return new Thread(r, threadName);
                }
            });
    }

}
10
Karol Król

ThreadPoolExecutorから documentation

新しいスレッドの作成新しいスレッドは、ThreadFactoryを使用して作成されます。特に指定されていない場合は、Executors.defaultThreadFactory()が使用され、すべてが同じThreadGroupにあり、同じNORM_PRIORITY優先度と非デーモンステータスを持つスレッドが作成されます。別のThreadFactoryを指定することで、スレッドの名前、スレッドグループ、優先度、デーモンのステータスなどを変更できます。 newThreadからnullを返すよう要求された場合、executorは続行しますが、タスクを実行できない可能性があります。

8
noamt

独自のカスタムスレッドファクトリを使用します。 ThreadFactoryBuilderを実装して、以下を実行できるカスタムスレッドファクトリを作成します。

  1. カスタムのスレッド名を持っている
  2. スレッドの選択-ユーザーまたはデーモンスレッド
  3. スレッドの優先度を選択できます
  4. キャッチされない例外ハンドラーを設定する柔軟性を持っている

次の投稿には、使用可能なサンプルThreadFactoryBuilder実装があります。

http://wilddiary.com/understanding-Java-threadfactory-creating-custom-thread-factories/

0
Drona