Java多模块下共用一个线程池配置类Configure,不要Executors创建
时间: 2024-02-24 19:56:00 浏览: 80
在Java多模块项目中共用一个线程池配置,可以将线程池配置代码写在一个公共的工具类中,然后在各个模块中调用该工具类即可。
具体实现步骤如下:
1.创建一个公共的线程池配置工具类Configure,例如:
```java
public class Configure {
private static final int CORE_POOL_SIZE = 10;
private static final int MAX_POOL_SIZE = 10;
private static final long KEEP_ALIVE_TIME = 0L;
private static final TimeUnit TIME_UNIT = TimeUnit.MILLISECONDS;
private static final BlockingQueue<Runnable> WORK_QUEUE = new LinkedBlockingQueue<>();
private static final ThreadPoolExecutor executorService = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE,
KEEP_ALIVE_TIME, TIME_UNIT, WORK_QUEUE);
static {
executorService.allowCoreThreadTimeOut(true);
}
public static ThreadPoolExecutor getExecutorService() {
return executorService;
}
}
```
2.在需要使用线程池的模块中,调用该工具类获取线程池对象,例如:
```java
public class MyModule {
private static ThreadPoolExecutor executorService = Configure.getExecutorService();
public void doSomething() {
executorService.execute(new Runnable() {
@Override
public void run() {
// 执行线程任务
}
});
}
}
```
通过上述方式,不同的模块均可共用同一个线程池配置,实现代码复用和统一管理。注意,使用ThreadPoolExecutor相较于Executors创建线程池,可以更加灵活地配置线程池参数。此外,在Configure类中添加了static代码块来进行线程池的初始化操作。
阅读全文