帮我写一个线程池工具类
时间: 2023-07-07 16:44:41 浏览: 59
好的,下面是一个简单的线程池工具类的 Java 代码实现:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolUtil {
private static ExecutorService executorService;
public static ExecutorService getExecutor() {
if (executorService == null) {
synchronized (ThreadPoolUtil.class) {
if (executorService == null) {
int cpuCount = Runtime.getRuntime().availableProcessors();
executorService = Executors.newFixedThreadPool(cpuCount * 2);
}
}
}
return executorService;
}
public static void shutdown() {
if (executorService != null) {
executorService.shutdown();
}
}
}
```
这个工具类使用了 Java 中的 `ExecutorService` 接口来实现线程池,其中,`getExecutor` 方法用来获取线程池实例,具体实现是双重检查加锁的方式,确保线程池只会被创建一次。在这里,我们使用了固定大小的线程池,大小为 CPU 核心数的两倍。这个工具类还提供了一个 `shutdown` 方法用来关闭线程池。这里需要注意的是,当我们使用完线程池后,一定要记得关闭线程池,否则会导致程序一直运行下去。