mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-12-08 01:59:14 +08:00
Change to record
This commit is contained in:
parent
bf2509f9bc
commit
c4aa2b0841
@ -31,6 +31,7 @@ import cn.hutool.v7.cron.task.Task;
|
|||||||
import cn.hutool.v7.log.LogUtil;
|
import cn.hutool.v7.log.LogUtil;
|
||||||
import cn.hutool.v7.setting.Setting;
|
import cn.hutool.v7.setting.Setting;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
@ -69,6 +70,7 @@ import java.util.concurrent.locks.ReentrantLock;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class Scheduler implements Serializable {
|
public class Scheduler implements Serializable {
|
||||||
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private final Lock lock = new ReentrantLock();
|
private final Lock lock = new ReentrantLock();
|
||||||
|
|||||||
@ -25,47 +25,16 @@ import cn.hutool.v7.cron.task.Task;
|
|||||||
* 作业执行器唯一关联一个作业,负责管理作业的运行的生命周期。
|
* 作业执行器唯一关联一个作业,负责管理作业的运行的生命周期。
|
||||||
*
|
*
|
||||||
* @author Looly
|
* @author Looly
|
||||||
|
* @param scheduler 调度器
|
||||||
|
* @param cronTask 被执行的任务
|
||||||
*/
|
*/
|
||||||
public class TaskExecutor implements Runnable {
|
public record TaskExecutor(Scheduler scheduler, CronTask cronTask) implements Runnable {
|
||||||
|
|
||||||
private final Scheduler scheduler;
|
|
||||||
private final CronTask task;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得原始任务对象
|
|
||||||
*
|
|
||||||
* @return 任务对象
|
|
||||||
*/
|
|
||||||
public Task getTask() {
|
|
||||||
return this.task.getRaw();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得原始任务对象
|
|
||||||
*
|
|
||||||
* @return 任务对象
|
|
||||||
* @since 5.4.7
|
|
||||||
*/
|
|
||||||
public CronTask getCronTask() {
|
|
||||||
return this.task;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 构造
|
|
||||||
*
|
|
||||||
* @param scheduler 调度器
|
|
||||||
* @param task 被执行的任务
|
|
||||||
*/
|
|
||||||
public TaskExecutor(final Scheduler scheduler, final CronTask task) {
|
|
||||||
this.scheduler = scheduler;
|
|
||||||
this.task = task;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
scheduler.listenerManager.notifyTaskStart(this);
|
scheduler.listenerManager.notifyTaskStart(this);
|
||||||
task.execute();
|
cronTask.execute();
|
||||||
scheduler.listenerManager.notifyTaskSucceeded(this);
|
scheduler.listenerManager.notifyTaskSucceeded(this);
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
scheduler.listenerManager.notifyTaskFailed(this, e);
|
scheduler.listenerManager.notifyTaskFailed(this, e);
|
||||||
|
|||||||
@ -61,17 +61,17 @@ public class CronTest {
|
|||||||
CronUtil.getScheduler().addListener(new TaskListener() {
|
CronUtil.getScheduler().addListener(new TaskListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStart(final TaskExecutor executor) {
|
public void onStart(final TaskExecutor executor) {
|
||||||
Console.log("Found task:[{}] start!", executor.getCronTask().getId());
|
Console.log("Found task:[{}] start!", executor.cronTask().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSucceeded(final TaskExecutor executor) {
|
public void onSucceeded(final TaskExecutor executor) {
|
||||||
Console.log("Found task:[{}] success!", executor.getCronTask().getId());
|
Console.log("Found task:[{}] success!", executor.cronTask().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(final TaskExecutor executor, final Throwable exception) {
|
public void onFailed(final TaskExecutor executor, final Throwable exception) {
|
||||||
Console.error("Found task:[{}] failed!", executor.getCronTask().getId());
|
Console.error("Found task:[{}] failed!", executor.cronTask().getId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user