Looly 5 年 前
コミット
1e22cce3a3
1 ファイル変更31 行追加10 行削除
  1. 31 10
      hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java

+ 31 - 10
hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java

@@ -19,21 +19,33 @@ import java.util.concurrent.TimeUnit;
 public class ThreadUtil {
 
 	/**
-	 * 新建一个线程池
-	 *
-	 * @param threadSize 同时执行的线程数大小
+	 * 新建一个线程池,默认的策略如下:
+	 * <pre>
+	 *    1. 初始线程数为corePoolSize指定的大小
+	 *    2. 没有最大线程数限制
+	 *    3. 默认使用LinkedBlockingQueue,默认队列大小为1024
+	 *    4. 当运行线程大于corePoolSize放入队列,队列满后抛出异常
+	 * </pre>
+	 *
+	 * @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();
 	}
 
 	/**
-	 * 获得一个新的线程池
+	 * 获得一个新的线程池,默认的策略如下:
+	 * <pre>
+	 *    1. 初始线程数为 0
+	 *    2. 最大线程数为Integer.MAX_VALUE
+	 *    3. 使用SynchronousQueue
+	 *    4. 任务直接提交给线程而不保持它们
+	 * </pre>
 	 *
 	 * @return ExecutorService
 	 */
@@ -42,7 +54,13 @@ public class ThreadUtil {
 	}
 
 	/**
-	 * 获得一个新的线程池,只有单个线程
+	 * 获得一个新的线程池,只有单个线程,策略如下:
+	 * <pre>
+	 *    1. 初始线程数为 1
+	 *    2. 最大线程数为 1
+	 *    3. 默认使用LinkedBlockingQueue,默认队列大小为1024
+	 *    4. 同时只允许一个线程工作,剩余放入队列等待,等待数超过1024报错
+	 * </pre>
 	 *
 	 * @return ExecutorService
 	 */
@@ -56,14 +74,17 @@ public class ThreadUtil {
 
 	/**
 	 * 获得一个新的线程池<br>
-	 * 如果maximumPoolSize = corePoolSize,在没有新任务加入的情况下,多出的线程将最多保留60s
+	 * 如果maximumPoolSize &gt;= 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();
 	}
 
 	/**