feat:(1.2.0-beta1): 1. 优化客户端线程池,当获取缓存线程池时才设置并行度

This commit is contained in:
opensnail 2024-09-08 08:53:16 +08:00
parent 01d24d754a
commit d4fcc62ba9
2 changed files with 12 additions and 4 deletions

View File

@ -21,7 +21,7 @@
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<revision>1.1.1</revision>
<revision>1.2.0-beta1</revision>
<netty-all.version>4.1.94.Final</netty-all.version>
<hutool-all.version>5.8.25</hutool-all.version>
<mybatis-plus.version>3.5.7</mybatis-plus.version>

View File

@ -24,13 +24,21 @@ public class ThreadPoolCache {
public static ThreadPoolExecutor createThreadPool(Long taskBatchId, int parallelNum) {
if (CACHE_THREAD_POOL.containsKey(taskBatchId)) {
return CACHE_THREAD_POOL.get(taskBatchId);
ThreadPoolExecutor cacheThreadPool = CACHE_THREAD_POOL.get(taskBatchId);
if (cacheThreadPool.getCorePoolSize() == parallelNum) {
return cacheThreadPool;
}
// 若能执行到这里只有分片任务(静态分片MAPMapReduce)才会需要多线程支持
cacheThreadPool.setCorePoolSize(parallelNum);
cacheThreadPool.setMaximumPoolSize(parallelNum);
return cacheThreadPool;
}
Supplier<ThreadPoolExecutor> supplier = () -> {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
parallelNum, parallelNum, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),
// 默认情况先只设置一个线程, 只有分片任务(静态分片MAPMapReduce)才会需要多线程支持
1, 1, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),
new CustomizableThreadFactory(MessageFormat.format("snail-job-job-{0}-", taskBatchId)));
threadPoolExecutor.allowCoreThreadTimeOut(true);
return threadPoolExecutor;