用java写一个线程池工具类
时间: 2024-01-05 08:44:33 浏览: 37
下面是一个简单的线程池工具类的示例:
```
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.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolUtil {
private static ExecutorService executorService = Executors.newCachedThreadPool();
public static void execute(Runnable task) {
executorService.execute(task);
}
public static void shutdown() {
executorService.shutdown();
}
}
```
这个线程池工具类使用了 Java 自带的 `ExecutorService` 接口和 `Executors` 工具类来创建线程池。它提供了两个方法:
- `execute(Runnable task)`:向线程池提交一个任务,该任务实现了 `Runnable` 接口。
- `shutdown()`:关闭线程池,等待所有任务完成后关闭。
你可以在你的项目中使用这个工具类来方便地管理线程池。
帮我用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` 方法用来获取和设置最大线程池大小。