10

我正在使用 ExecutorService 来执行一些 Callables,但线程的名称类似于 fixed-pool-1-thread-1。

如何更改线程的名称?如果不可能,还有另一种执行 Callables 的方法,我可以设置 threadS 的名称吗?

4

3 回答 3

16

您必须使用ExecutorService允许您设置用于创建线程的ThreadFactory1的实现,例如ThreadPoolExecutor. 传递一个创建具有正确名称的线程的实例。

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 回答