10

ExecutorService を使用していくつかの Callable を実行していますが、スレッドの名前は fixed-pool-1-thread-1 のようになっています。

スレッドの名前を変更するにはどうすればよいですか? それが不可能な場合、threadS の名前を設定できる Callables を実行する別の方法はありますか?

4

3 に答える 3

16

たとえば、スレッドの作成に使用される1ExecutorServiceを設定できる実装を使用する必要があります。適切な名前でスレッドを作成するインスタンスを渡します。ThreadFactoryThreadPoolExecutor

commons-langには、次のパターンでスレッド名を指定できる便利なクラスもありますBasicThreadFactoryThreadFactoryこれにより、命名動作を提供するためだけにサブクラスを作成する必要がなくなります。

于 2011-05-25T14:37:55.450 に答える
6

グアバはほとんどの場合、必要なものを持っています。ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("my-sad-thread-%d").build()そしてそれをあなたに渡しますExecutorService

于 2012-03-17T09:05:04.640 に答える
4

手っ取り早く汚い方法。

public void run() {
    Thread.currentThread().setName(aName);
    doStuff();
}
于 2014-07-18T07:47:58.737 に答える