ThreadPoolExecutor 守护线程
时间: 2023-08-19 18:13:02 浏览: 273
ThreadPoolExecutor线程池的使用方法
5星 · 资源好评率100%
ThreadPoolExecutor并没有直接提供守护线程的功能。守护线程是指在程序运行时在后台提供一种通用服务的线程,当所有非守护线程结束时,守护线程也会自动结束。在ThreadPoolExecutor中,可以通过自定义线程工厂来创建线程,并在创建线程时设置线程为守护线程。例如,可以实现一个自定义的线程工厂类ThreadFactoryDemo,其中的newThread方法可以设置线程为守护线程,如下所示:[3]
```java
public class ThreadFactoryDemo implements ThreadFactory {
private int id = 0;
public Thread newThread(Runnable r){
Thread t = new Thread(r);
t.setName("Thread-Name:" + id);
//设置线程为守护线程
t.setDaemon(true);
return t;
}
}
```
然后,在创建ThreadPoolExecutor时,可以使用自定义的线程工厂来创建线程,从而实现守护线程的功能。例如:
```java
ExecutorService threadPool = new ThreadPoolExecutor(
corePoolSize,
maximumPoolSize,
keepAliveTime,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(queueSize),
new ThreadFactoryDemo(),
new ThreadPoolExecutor.CallerRunsPolicy()
);
```
通过这种方式,创建的线程池中的线程将会是守护线程。
阅读全文