帮我用java写一个动态线程池工具类
时间: 2023-08-04 20:39:33 浏览: 111
好的,下面是一个简单的动态线程池工具类的 Java 代码实现:
```java
import java.util.concurrent.*;
public class DynamicThreadPool {
private ThreadPoolExecutor executor;
public DynamicThreadPool(int corePoolSize, int maxPoolSize, int queueCapacity) {
executor = new ThreadPoolExecutor(corePoolSize, maxPoolSize, 60L, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(queueCapacity), new ThreadPoolExecutor.CallerRunsPolicy());
}
public void execute(Runnable task) {
executor.execute(task);
}
public void shutdown() {
executor.shutdown();
}
public int getActiveCount() {
return executor.getActiveCount();
}
public int getQueueSize() {
return executor.getQueue().size();
}
public int getMaxPoolSize() {
return executor.getMaximumPoolSize();
}
public void setMaxPoolSize(int maxPoolSize) {
executor.setMaximumPoolSize(maxPoolSize);
}
}
```
这个工具类使用了 Java 中的 `ThreadPoolExecutor` 类来实现线程池。其中,构造函数需要传入三个参数:`corePoolSize` 表示核心线程池大小,`maxPoolSize` 表示最大线程池大小,`queueCapacity` 表示任务队列容量。这个工具类还提供了一些方法,例如 `execute` 方法用来提交任务到线程池中,`shutdown` 方法用来关闭线程池,`getActiveCount` 方法用来获取当前活跃线程数,`getQueueSize` 方法用来获取当前任务队列大小,`getMaxPoolSize` 和 `setMaxPoolSize` 方法用来获取和设置最大线程池大小。
阅读全文