ThreadPoolExecutor threadFactory
时间: 2023-10-17 13:00:29 浏览: 102
ThreadPoolExecutor线程池
ThreadPoolExecutor的threadFactory参数是用来创建新线程的工厂。它是一个接口类型,通常需要实现ThreadFactory接口。
通过提供自定义的ThreadFactory,可以对线程的创建过程进行定制化。例如,可以设置线程的名称、优先级、是否为守护线程等。
以下是一个示例代码,展示了如何使用threadFactory参数创建一个ThreadPoolExecutor:
```java
import java.util.concurrent.*;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建自定义的ThreadFactory
ThreadFactory threadFactory = new CustomThreadFactory();
// 创建ThreadPoolExecutor并指定threadFactory
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, 10, 1, TimeUnit.MINUTES, new LinkedBlockingQueue<>(), threadFactory);
// 执行任务
for (int i = 0; i < 10; i++) {
executor.execute(new Task());
}
// 关闭线程池
executor.shutdown();
}
static class CustomThreadFactory implements ThreadFactory {
private int counter = 0;
@Override
public Thread newThread(Runnable r) {
counter++;
String threadName = "CustomThread-" + counter;
return new Thread(r, threadName);
}
}
static class Task implements Runnable {
@Override
public void run() {
System.out.println("Task executed by " + Thread.currentThread().getName());
}
}
}
```
在上述代码中,我们通过实现ThreadFactory接口创建了一个自定义的线程工厂CustomThreadFactory。在newThread方法中,我们为每个新线程设置了一个名称,并返回一个新的Thread对象。
然后,我们使用指定的threadFactory创建了一个ThreadPoolExecutor,并提交了一些任务。执行这些任务时,会由创建的线程池中的线程来执行。
注意:ThreadPoolExecutor的threadFactory参数是可选的。如果不指定threadFactory,
阅读全文