为ThreadPoolExecutor线程池设置线程池名称
时间: 2023-10-17 11:01:26 浏览: 188
您可以使用 `ThreadFactory` 来为 `ThreadPoolExecutor` 设置线程池的名称。下面是一个示例代码:
```java
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()` 方法为线程设置名称。
使用这种方式,您可以为线程池中的每个线程设置一个唯一的名称,方便调试和识别。
阅读全文
相关推荐


















