launchers = new ArrayList<>();
-
- /**
- * 构造
- * @param scheduler {@link Scheduler}
- */
- public TaskLauncherManager(final Scheduler scheduler) {
- this.scheduler = scheduler;
- }
-
- /**
- * 启动 TaskLauncher
- * @param millis 触发事件的毫秒数
- * @return {@link TaskLauncher}
- */
- protected TaskLauncher spawnLauncher(final long millis) {
- final TaskLauncher launcher = new TaskLauncher(this.scheduler, millis);
- synchronized (this.launchers) {
- this.launchers.add(launcher);
- }
- this.scheduler.threadExecutor.execute(launcher);
- return launcher;
- }
-
- /**
- * 启动器启动完毕,启动完毕后从执行器列表中移除
- * @param launcher 启动器 {@link TaskLauncher}
- */
- protected void notifyLauncherCompleted(final TaskLauncher launcher) {
- synchronized (launchers) {
- launchers.remove(launcher);
- }
- }
-}
diff --git a/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskExecutorManager.java b/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskManager.java
similarity index 61%
rename from hutool-cron/src/main/java/cn/hutool/v7/cron/TaskExecutorManager.java
rename to hutool-cron/src/main/java/cn/hutool/v7/cron/TaskManager.java
index 0b9ee5c7a7..7212df7a04 100644
--- a/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskExecutorManager.java
+++ b/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2025 Hutool Team and hutool.cn
+ * Copyright (c) 2025 Hutool Team and hutool.cn
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,26 +19,31 @@ package cn.hutool.v7.cron;
import cn.hutool.v7.cron.task.CronTask;
import cn.hutool.v7.cron.task.Task;
+import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
- * 作业执行管理器
- * 负责管理作业的启动、停止等
- *
- *
- * 此类用于管理正在运行的作业情况,作业启动后加入任务列表,任务结束移除
- *
+ * 任务管理器,提供:
+ *
*
* @author Looly
- * @since 3.0.1
+ * @since 7.0.0
*/
-public class TaskExecutorManager implements Serializable {
+public class TaskManager implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
- protected Scheduler scheduler;
+ protected final Scheduler scheduler;
+ /**
+ * 启动器列表
+ */
+ protected final List launchers = new ArrayList<>();
/**
* 执行器列表
*/
@@ -46,13 +51,39 @@ public class TaskExecutorManager implements Serializable {
/**
* 构造
- *
* @param scheduler {@link Scheduler}
*/
- public TaskExecutorManager(final Scheduler scheduler) {
+ public TaskManager(final Scheduler scheduler) {
this.scheduler = scheduler;
}
+ // region ----- TaskLauncher
+ /**
+ * 启动 TaskLauncher
+ * @param millis 触发事件的毫秒数
+ * @return {@link TaskLauncher}
+ */
+ protected TaskLauncher spawnLauncher(final long millis) {
+ final TaskLauncher launcher = new TaskLauncher(this.scheduler, millis);
+ synchronized (this.launchers) {
+ this.launchers.add(launcher);
+ }
+ this.scheduler.threadExecutor.execute(launcher);
+ return launcher;
+ }
+
+ /**
+ * 启动器启动完毕,启动完毕后从执行器列表中移除
+ * @param launcher 启动器 {@link TaskLauncher}
+ */
+ protected void notifyLauncherCompleted(final TaskLauncher launcher) {
+ synchronized (launchers) {
+ launchers.remove(launcher);
+ }
+ }
+ // endregion
+
+ // region ----- TaskExecutor
/**
* 获取所有正在执行的任务调度执行器
*
@@ -82,12 +113,11 @@ public class TaskExecutorManager implements Serializable {
* 执行器执行完毕调用此方法,将执行器从执行器列表移除,此方法由{@link TaskExecutor}对象调用,用于通知管理器自身已完成执行
*
* @param executor 执行器 {@link TaskExecutor}
- * @return this
*/
- public TaskExecutorManager notifyExecutorCompleted(final TaskExecutor executor) {
+ public void notifyExecutorCompleted(final TaskExecutor executor) {
synchronized (executors) {
executors.remove(executor);
}
- return this;
}
+ // endregion
}
diff --git a/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskTable.java b/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskTable.java
index 204b379959..bb8f076f80 100644
--- a/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskTable.java
+++ b/hutool-cron/src/main/java/cn/hutool/v7/cron/TaskTable.java
@@ -22,6 +22,7 @@ import cn.hutool.v7.cron.pattern.CronPattern;
import cn.hutool.v7.cron.task.CronTask;
import cn.hutool.v7.cron.task.Task;
+import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.concurrent.locks.Lock;
@@ -36,6 +37,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
* @author Looly
*/
public class TaskTable implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
/**
@@ -305,7 +307,7 @@ public class TaskTable implements Serializable {
final int size = size();
for (int i = 0; i < size; i++) {
if (this.table.getMiddle(i).match(scheduler.config.timezone, millis, scheduler.config.matchSecond)) {
- scheduler.taskExecutorManager.spawnExecutor(
+ scheduler.taskManager.spawnExecutor(
new CronTask(this.table.getLeft(i), this.table.getMiddle(i), this.table.getRight(i)));
}
}
diff --git a/hutool-cron/src/main/java/cn/hutool/v7/cron/listener/TaskListenerManager.java b/hutool-cron/src/main/java/cn/hutool/v7/cron/listener/TaskListenerManager.java
index 25b90783e1..cd21da8d04 100644
--- a/hutool-cron/src/main/java/cn/hutool/v7/cron/listener/TaskListenerManager.java
+++ b/hutool-cron/src/main/java/cn/hutool/v7/cron/listener/TaskListenerManager.java
@@ -19,6 +19,7 @@ package cn.hutool.v7.cron.listener;
import cn.hutool.v7.cron.TaskExecutor;
import cn.hutool.v7.log.LogUtil;
+import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@@ -29,6 +30,7 @@ import java.util.List;
*
*/
public class TaskListenerManager implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private final List listeners = new ArrayList<>();
diff --git a/hutool-cron/src/main/java/cn/hutool/v7/cron/task/RunnableTask.java b/hutool-cron/src/main/java/cn/hutool/v7/cron/task/RunnableTask.java
index 196ca598dc..55c895c95c 100644
--- a/hutool-cron/src/main/java/cn/hutool/v7/cron/task/RunnableTask.java
+++ b/hutool-cron/src/main/java/cn/hutool/v7/cron/task/RunnableTask.java
@@ -19,19 +19,10 @@ package cn.hutool.v7.cron.task;
/**
* {@link Runnable} 的 {@link Task}包装
*
+ * @param runnable 任务执行体
* @author Looly
*/
-public class RunnableTask implements Task {
- private final Runnable runnable;
-
- /**
- * 构造
- *
- * @param runnable {@link Runnable}
- */
- public RunnableTask(final Runnable runnable) {
- this.runnable = runnable;
- }
+public record RunnableTask(Runnable runnable) implements Task {
@Override
public void execute() {