From 028c3ed60dad90553120205b58af28431e1616d8 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 7 Jun 2021 00:39:21 +0800 Subject: [PATCH] add method --- .../cn/hutool/core/thread/ThreadUtil.java | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) 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 599146725..0227ca523 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 @@ -12,6 +12,7 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; /** * 线程池工具 @@ -366,6 +367,19 @@ public class ThreadUtil { } } + /** + * 创建本地线程对象 + * + * @param 持有对象类型 + * @param supplier 初始化线程对象函数 + * @return 本地线程 + * @see ThreadLocal#withInitial(Supplier) + * @since 5.6.7 + */ + public static ThreadLocal createThreadLocal(Supplier supplier) { + return ThreadLocal.withInitial(supplier); + } + /** * 创建ThreadFactoryBuilder * @@ -562,20 +576,19 @@ public class ThreadUtil { *
  • fixedDelay模式:下一次任务不等待上一次任务,到周期自动执行。
  • * * - * - * @param executor 定时任务线程池,{@code null}新建一个默认线程池 - * @param command 需要定时执行的逻辑 - * @param initialDelay 初始延迟,单位毫秒 - * @param period 执行周期,单位毫秒 + * @param executor 定时任务线程池,{@code null}新建一个默认线程池 + * @param command 需要定时执行的逻辑 + * @param initialDelay 初始延迟,单位毫秒 + * @param period 执行周期,单位毫秒 * @param fixedRateOrFixedDelay {@code true}表示fixedRate模式,{@code false}表示fixedDelay模式 * @return {@link ScheduledThreadPoolExecutor} * @since 5.5.8 */ public static ScheduledThreadPoolExecutor schedule(ScheduledThreadPoolExecutor executor, - Runnable command, - long initialDelay, - long period, - boolean fixedRateOrFixedDelay){ + Runnable command, + long initialDelay, + long period, + boolean fixedRateOrFixedDelay) { return schedule(executor, command, initialDelay, period, TimeUnit.MILLISECONDS, fixedRateOrFixedDelay); } @@ -587,12 +600,11 @@ public class ThreadUtil { *
  • fixedDelay模式:下一次任务不等待上一次任务,到周期自动执行。
  • * * - * - * @param executor 定时任务线程池,{@code null}新建一个默认线程池 - * @param command 需要定时执行的逻辑 - * @param initialDelay 初始延迟 - * @param period 执行周期 - * @param timeUnit 时间单位 + * @param executor 定时任务线程池,{@code null}新建一个默认线程池 + * @param command 需要定时执行的逻辑 + * @param initialDelay 初始延迟 + * @param period 执行周期 + * @param timeUnit 时间单位 * @param fixedRateOrFixedDelay {@code true}表示fixedRate模式,{@code false}表示fixedDelay模式 * @return {@link ScheduledThreadPoolExecutor} * @since 5.6.5 @@ -602,13 +614,13 @@ public class ThreadUtil { long initialDelay, long period, TimeUnit timeUnit, - boolean fixedRateOrFixedDelay){ - if(null == executor){ + boolean fixedRateOrFixedDelay) { + if (null == executor) { executor = createScheduledExecutor(2); } - if(fixedRateOrFixedDelay){ + if (fixedRateOrFixedDelay) { executor.scheduleAtFixedRate(command, initialDelay, period, timeUnit); - } else{ + } else { executor.scheduleWithFixedDelay(command, initialDelay, period, timeUnit); }