为ThreadPoolExecutor线程池设置线程池名称
时间: 2023-10-17 17:01:26 浏览: 189
您可以使用 ThreadFactory
来为 ThreadPoolExecutor
设置线程池的名称。下面是一个示例代码:
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) {
ThreadFactory threadFactory = new ThreadFactoryBuilder("MyThreadPool");
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 1, TimeUnit.MINUTES, new LinkedBlockingQueue<>(), threadFactory);
// 使用线程池执行任务
executor.execute(new MyTask());
}
}
class ThreadFactoryBuilder implements ThreadFactory {
private final String namePrefix;
public ThreadFactoryBuilder(String namePrefix) {
this.namePrefix = namePrefix;
}
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
t.setName(namePrefix + "-" + t.getId());
return t;
}
}
class MyTask implements Runnable {
@Override
public void run() {
// 执行任务逻辑
}
}
在上述代码中,我创建了一个 ThreadFactoryBuilder
类,它实现了 ThreadFactory
接口。在 ThreadFactoryBuilder
类中,我可以设置一个线程池名称的前缀,然后在 newThread
方法中,通过 Thread.setName()
方法为线程设置名称。
使用这种方式,您可以为线程池中的每个线程设置一个唯一的名称,方便调试和识别。
相关推荐


















