diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java index 1093d9bcd..9a1aecd2d 100644 --- a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java @@ -19,21 +19,33 @@ import java.util.concurrent.TimeUnit; public class ThreadUtil { /** - * 新建一个线程池 + * 新建一个线程池,默认的策略如下: + *
+	 *    1. 初始线程数为corePoolSize指定的大小
+	 *    2. 没有最大线程数限制
+	 *    3. 默认使用LinkedBlockingQueue,默认队列大小为1024
+	 *    4. 当运行线程大于corePoolSize放入队列,队列满后抛出异常
+	 * 
* - * @param threadSize 同时执行的线程数大小 + * @param corePoolSize 同时执行的线程数大小 * @return ExecutorService */ - public static ExecutorService newExecutor(int threadSize) { + public static ExecutorService newExecutor(int corePoolSize) { ExecutorBuilder builder = ExecutorBuilder.create(); - if (threadSize > 0) { - builder.setCorePoolSize(threadSize); + if (corePoolSize > 0) { + builder.setCorePoolSize(corePoolSize); } return builder.build(); } /** - * 获得一个新的线程池 + * 获得一个新的线程池,默认的策略如下: + *
+	 *    1. 初始线程数为 0
+	 *    2. 最大线程数为Integer.MAX_VALUE
+	 *    3. 使用SynchronousQueue
+	 *    4. 任务直接提交给线程而不保持它们
+	 * 
* * @return ExecutorService */ @@ -42,7 +54,13 @@ public class ThreadUtil { } /** - * 获得一个新的线程池,只有单个线程 + * 获得一个新的线程池,只有单个线程,策略如下: + *
+	 *    1. 初始线程数为 1
+	 *    2. 最大线程数为 1
+	 *    3. 默认使用LinkedBlockingQueue,默认队列大小为1024
+	 *    4. 同时只允许一个线程工作,剩余放入队列等待,等待数超过1024报错
+	 * 
* * @return ExecutorService */ @@ -56,14 +74,17 @@ public class ThreadUtil { /** * 获得一个新的线程池
- * 如果maximumPoolSize =》 corePoolSize,在没有新任务加入的情况下,多出的线程将最多保留60s + * 如果maximumPoolSize >= corePoolSize,在没有新任务加入的情况下,多出的线程将最多保留60s * * @param corePoolSize 初始线程池大小 * @param maximumPoolSize 最大线程池大小 * @return {@link ThreadPoolExecutor} */ public static ThreadPoolExecutor newExecutor(int corePoolSize, int maximumPoolSize) { - return ExecutorBuilder.create().setCorePoolSize(corePoolSize).setMaxPoolSize(maximumPoolSize).build(); + return ExecutorBuilder.create() + .setCorePoolSize(corePoolSize) + .setMaxPoolSize(maximumPoolSize) + .build(); } /**