Запустить расписание, когда текущее расписание еще не закончено Cron4j
Я использую Cron4j для создания расписаний резервного копирования для базы данных. Предположим, у нас было 2 расписания, первое началось в 17:00, а второе началось в 17:30, оба в один и тот же день. Я не знаю, что произойдет, если время резервного копирования первого расписания превысит 30 минут. Я предполагаю, что второе расписание все еще запускается и может разрушить базу данных, так как первое не было завершено и база данных не была обновлена. Что мне делать в этом случае?
1 ответ
Вы можете создать тему с произвольным именем и запустить процесс восстановления. И в следующий раз, когда вы попытаетесь найти его по имени. Если он будет найден - 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();
}