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..d883c2f8e 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,20 @@ public class ThreadPoolCache { public static ThreadPoolExecutor createThreadPool(Long taskBatchId, int parallelNum) { if (CACHE_THREAD_POOL.containsKey(taskBatchId)) { - return CACHE_THREAD_POOL.get(taskBatchId); + ThreadPoolExecutor threadPoolExecutor = CACHE_THREAD_POOL.get(taskBatchId); + if (threadPoolExecutor.getCorePoolSize() == parallelNum) { + return threadPoolExecutor; + } else { + threadPoolExecutor.setCorePoolSize(parallelNum); + threadPoolExecutor.setMaximumPoolSize(parallelNum); + } + return threadPoolExecutor; } Supplier supplier = () -> { ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( - parallelNum, parallelNum, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), + 1, 1, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new CustomizableThreadFactory(MessageFormat.format("snail-job-job-{0}-", taskBatchId))); threadPoolExecutor.allowCoreThreadTimeOut(true); return threadPoolExecutor;