我正在使用 ExecutorService 来执行一些 Callables,但线程的名称类似于 fixed-pool-1-thread-1。
如何更改线程的名称?如果不可能,还有另一种执行 Callables 的方法,我可以设置 threadS 的名称吗?
我正在使用 ExecutorService 来执行一些 Callables,但线程的名称类似于 fixed-pool-1-thread-1。
如何更改线程的名称?如果不可能,还有另一种执行 Callables 的方法,我可以设置 threadS 的名称吗?
您必须使用ExecutorService
允许您设置用于创建线程的ThreadFactory
1的实现,例如ThreadPoolExecutor
. 传递一个创建具有正确名称的线程的实例。
commons-lang 中还有一个方便的类,它允许使用模式指定线程名称:BasicThreadFactory
。ThreadFactory
这使您不必为了提供命名行为而创建子类。
番石榴几乎总能满足您的需求。ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("my-sad-thread-%d").build()
并将其传递给您的ExecutorService
.
一种快速而肮脏的方式;
public void run() {
Thread.currentThread().setName(aName);
doStuff();
}