用java写个线程池工具类
时间: 2023-03-30 17:03:10 浏览: 78
好的,我可以回答这个问题。线程池是一种常用的并发编程技术,可以有效地管理线程资源,提高程序的性能和稳定性。在Java中,可以使用java.util.concurrent包中的ThreadPoolExecutor类来实现线程池。你可以编写一个工具类,封装ThreadPoolExecutor的创建和使用,提供一些常用的方法,比如提交任务、关闭线程池等。这样可以方便地在项目中使用线程池,避免重复编写代码,提高开发效率。
相关问题
用java写一个线程池工具类
下面是一个简单的线程池工具类的示例:
```
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolUtil {
private static ExecutorService executorService;
public static void execute(Runnable runnable) {
if (executorService == null) {
executorService = Executors.newFixedThreadPool(4);
}
executorService.execute(runnable);
}
public static void shutdown() {
if (executorService != null) {
executorService.shutdown();
}
}
}
```
这个类使用`ExecutorService`来创建线程池,`execute`方法接受一个`Runnable`对象并将其提交给线程池执行。`shutdown`方法用于关闭线程池。这个示例中创建了一个固定大小为4的线程池,你可以根据需要更改线程池的大小。
帮我用java写一个动态线程池工具类
好的,下面是一个简单的动态线程池工具类的 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` 方法用来获取和设置最大线程池大小。