gpt4 book ai didi

java-如何检查调度程序是否正在工作

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:38 24 4
gpt4 key购买 nike

我正在使用 java SingleThreadScheduledExecutor 在 Web 应用程序中运行计划任务

我遇到的问题是 - 如何确定调度程序是否仍在运行并且没有崩溃?

有没有更好的方法来做到这一点,而不是让另一个调度程序来检查这个特定的调度程序

最佳答案

实际上有一种方法可以检查

public class TaskSchedulerService{
private final ThreadPoolTaskScheduler taskScheduler; //initialize it here or in constructor
private Map<String,ScheduledFuture<?>> scheduleMap = new ConcurrentHashMap<>();

public TaskSchedulerServiceImpl() {
this.schedulerName = schedulerName;
taskScheduler.initialize();
}

public boolean isScheduled(String taskId) {
final ScheduledFuture<?> exits = scheduledTasks.get(taskId);
return exits != null && exits.isDone();
}

public ScheduledFuture<?> schedule(String taskId, Runnable task, Date date) {

ScheduledFuture<?> scheduled = scheduleMap.get(taskId);
if (scheduled==null ) {
ScheduledFuture<?> future = taskScheduler.schedule(task, date);
scheduleMap.put(taskId, future);
return future;

} else {
// log it is already scheduled
return scheduled;
}
}

我知道为时已晚,但我希望其他人可以从中受益

实现背后的逻辑是,每当您尝试安排任务时,您都必须使用 taskId 将其添加到 map 中,在这种情况下,最好找到 MAP 中存在的任何任务,或者如果需要,将其删除并检查该任务是否完成

关于java-如何检查调度程序是否正在工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com