Java 如何更改ExecutorService中线程的名称?

Java 如何更改ExecutorService中线程的名称?,java,multithreading,executorservice,Java,Multithreading,Executorservice,我使用ExecutorService来执行一些可调用项,但是线程的名称类似于fixed-pool-1-thread-1 如何更改线程的名称?如果不可能,还有另一种执行可调用项的方法可以设置线程的名称吗?您必须使用ExecutorService实现,该实现允许您设置用于创建线程的ThreadFactory。传递一个使用专有名称创建线程的实例 commons lang中还有一个方便的类,允许使用模式指定线程名称:。这使您不必仅仅为了提供命名行为而创建ThreadFactory子类。Guava几乎总是

我使用ExecutorService来执行一些可调用项,但是线程的名称类似于fixed-pool-1-thread-1


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

您必须使用
ExecutorService
实现,该实现允许您设置用于创建线程的
ThreadFactory
。传递一个使用专有名称创建线程的实例


commons lang中还有一个方便的类,允许使用模式指定线程名称:。这使您不必仅仅为了提供命名行为而创建
ThreadFactory
子类。

Guava几乎总是拥有您想要的
ThreadFactory namedThreadFactory=new ThreadFactoryBuilder().setNameFormat(“我的sad线程-%d”).build()
并以一种快速而肮脏的方式将其传递给您的
执行器服务

public void run() {
    Thread.currentThread().setName(aName);
    doStuff();
}

前几天我刚问过这个问题-@mre,是的,它被问了很多;DR Answer:+1,对于Javadoc参考和正确/简洁的回答,ThreadFactory接口有一些本机java实现?@Renato,唯一可访问的库实现来自
Executors
实用程序类,它不允许您提供名称字符串。这假设您可以更改线程的运行方法。