在当前运行时间表尚未完成时启动时间表

时间:2018-08-15 12:30:08

标签: java cron4j

我正在使用Cron4j为数据库创建备份计划。假设我们有2个时间表,第一个时间表在同一天下午5.00点开始,第二个时间表在下午5.30点开始。我不知道如果第一个日程表的备份时间超过30分钟会发生什么。我认为第二个计划仍将启动,并且可能会破坏数据库,因为第一个计划尚未完成且数据库未更新。在那种情况下我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用自定义名称创建线程,并将进程放入其中。 下次您尝试按名称查找他时。 如果找到他-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();
    }