ThreadPoolExecutor的线程工厂参数
时间: 2023-11-21 18:55:07 浏览: 224
ThreadPoolExecutor是Java中的一个线程池类,它有一个线程工厂参数,用于创建线程。线程工厂必须实现ThreadFactory接口,该接口只有一个方法newThread(Runnable r),用于创建一个新的线程并返回。在ThreadPoolExecutor中,线程工厂参数用于创建新线程时使用。如果没有指定线程工厂,则默认使用Executors.defaultThreadFactory()方法创建线程。如果需要自定义线程工厂,可以创建一个实现ThreadFactory接口的类,并在创建ThreadPoolExecutor时将其作为参数传入。例如,可以使用如下代码创建一个自定义的线程工厂MyThreadFactory,并将其作为参数传入ThreadPoolExecutor的构造函数中:
```java
public class MyThreadFactory implements ThreadFactory {
static AtomicInteger threadNo = new AtomicInteger(1);
@Override
public Thread newThread(Runnable target) {
String threadName = "thread-"+threadNo.get();
System.out.println("创建一个线程,名称为:"+threadName);
threadNo.incrementAndGet();
// 设置线程名称和异步执行目标
Thread thread = new Thread(target, threadName);
thread.setDaemon(true);
return thread;
}
}
MyThreadFactory myThreadFactory = new MyThreadFactory();
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 20, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), myThreadFactory);
```
这里创建了一个名为MyThreadFactory的自定义线程工厂,并将其作为参数传入ThreadPoolExecutor的构造函数中。在MyThreadFactory中,newThread方法用于创建一个新的线程,并设置线程名称和异步执行目标。在创建ThreadPoolExecutor时,将自定义的线程工厂作为参数传入,即可使用自定义的线程工厂创建线程池中的线程。
阅读全文