当前 运行 计划尚未完成时开始计划 Cron4j
Start a schedule when current running schedule hasn't finished yet Cron4j
我正在使用 Cron4j 为数据库创建备份计划。假设我们有两个时间表,第一个在下午 5 点开始,第二个在下午 5 点 30 分开始,两者都在同一天。我不知道如果第一个计划的备份时间大于 30 分钟会发生什么。我假设第二个计划仍会开始并且可能会破坏数据库,因为第一个计划没有完成并且数据库没有更新。那我该怎么办?
您可以使用自定义名称创建线程并将您的备份进程放入其中。
下次你尝试通过名字找到他时。
如果他会被发现 - gackup 正在工作。
Set<Thread> threads = Thread.getAllStackTraces().keySet();
boolean isWorking = threads.stream().anyMatch(t -> t.getName().equals("My backup is working"));
if (!isWorking) {
Runnable task = () -> {
Thread.currentThread().setName("My backup is working");
//some code of run backup
System.out.println("start backup");
};
Thread thread = new Thread(task);
System.out.println("Done!");
thread.start();
}
我正在使用 Cron4j 为数据库创建备份计划。假设我们有两个时间表,第一个在下午 5 点开始,第二个在下午 5 点 30 分开始,两者都在同一天。我不知道如果第一个计划的备份时间大于 30 分钟会发生什么。我假设第二个计划仍会开始并且可能会破坏数据库,因为第一个计划没有完成并且数据库没有更新。那我该怎么办?
您可以使用自定义名称创建线程并将您的备份进程放入其中。 下次你尝试通过名字找到他时。 如果他会被发现 - gackup 正在工作。
Set<Thread> threads = Thread.getAllStackTraces().keySet();
boolean isWorking = threads.stream().anyMatch(t -> t.getName().equals("My backup is working"));
if (!isWorking) {
Runnable task = () -> {
Thread.currentThread().setName("My backup is working");
//some code of run backup
System.out.println("start backup");
};
Thread thread = new Thread(task);
System.out.println("Done!");
thread.start();
}