Java 获取ThreadPoolTaskExecutor中线程数量
时间: 2023-07-05 07:20:12 浏览: 66
在Spring框架中,我们可以通过`ThreadPoolTaskExecutor`来创建线程池。要获取`ThreadPoolTaskExecutor`中线程数量,可以使用`ThreadPoolTaskExecutor`类的`getActiveCount()`方法来获取当前线程池中正在执行任务的线程数量,再使用`ThreadPoolTaskExecutor`类的`getPoolSize()`方法来获取当前线程池中的线程总数。示例代码如下:
```java
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
public class CustomThreadPool {
public static void main(String[] args) {
// 创建线程池
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(4);
executor.setQueueCapacity(10);
executor.initialize();
// 提交任务
for (int i = 0; i < 6; i++) {
executor.execute(new Task(i));
}
// 获取线程池中正在执行任务的线程数量
int activeCount = executor.getActiveCount();
System.out.println("当前线程池中正在执行任务的线程数量:" + activeCount);
// 获取线程池中的线程总数
int poolSize = executor.getPoolSize();
System.out.println("当前线程池中的线程总数:" + poolSize);
// 关闭线程池
executor.shutdown();
}
}
class Task implements Runnable {
private int taskId;
public Task(int taskId) {
this.taskId = taskId;
}
@Override
public void run() {
System.out.println("任务 " + taskId + " 正在执行...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务 " + taskId + " 执行完成!");
}
}
```
上述代码中,`CustomThreadPool`类创建了一个`ThreadPoolTaskExecutor`线程池`executor`,并提交了6个任务。然后使用`executor.getActiveCount()`方法和`executor.getPoolSize()`方法获取当前线程池中的线程数量信息,并打印输出。最后关闭线程池。