ExecutorService を使用していくつかの Callable を実行していますが、スレッドの名前は fixed-pool-1-thread-1 のようになっています。
スレッドの名前を変更するにはどうすればよいですか? それが不可能な場合、threadS の名前を設定できる Callables を実行する別の方法はありますか?
ExecutorService を使用していくつかの Callable を実行していますが、スレッドの名前は fixed-pool-1-thread-1 のようになっています。
スレッドの名前を変更するにはどうすればよいですか? それが不可能な場合、threadS の名前を設定できる Callables を実行する別の方法はありますか?
たとえば、スレッドの作成に使用される1ExecutorService
を設定できる実装を使用する必要があります。適切な名前でスレッドを作成するインスタンスを渡します。ThreadFactory
ThreadPoolExecutor
commons-langには、次のパターンでスレッド名を指定できる便利なクラスもありますBasicThreadFactory
。ThreadFactory
これにより、命名動作を提供するためだけにサブクラスを作成する必要がなくなります。
グアバはほとんどの場合、必要なものを持っています。ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("my-sad-thread-%d").build()
そしてそれをあなたに渡しますExecutorService
。
手っ取り早く汚い方法。
public void run() {
Thread.currentThread().setName(aName);
doStuff();
}