Запустить расписание, когда текущее расписание еще не закончено 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();
    }
Другие вопросы по тегам