diff --git a/pom.xml b/pom.xml index 5ab549448..8df6e69ad 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 17 17 17 - 1.1.1 + 1.2.0-beta1 4.1.94.Final 5.8.25 3.5.7 diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/cache/ThreadPoolCache.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/cache/ThreadPoolCache.java index e22d96512..ac6a265c7 100644 --- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/cache/ThreadPoolCache.java +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/cache/ThreadPoolCache.java @@ -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; + } + + // 若能执行到这里只有分片任务(静态分片、MAP、MapReduce)才会需要多线程支持 + cacheThreadPool.setCorePoolSize(parallelNum); + cacheThreadPool.setMaximumPoolSize(parallelNum); + return cacheThreadPool; } Supplier supplier = () -> { - ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( - parallelNum, parallelNum, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), + // 默认情况先只设置一个线程, 只有分片任务(静态分片、MAP、MapReduce)才会需要多线程支持 + 1, 1, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new CustomizableThreadFactory(MessageFormat.format("snail-job-job-{0}-", taskBatchId))); threadPoolExecutor.allowCoreThreadTimeOut(true); return threadPoolExecutor;