在当前运行计划尚未完成时启动计划 Cron4j

我正在使用 Cron4j 为数据库创建备份计划。假设我们有 2 个时间表,第一个在 5.00 pm 开始,第二个在 5.30 pm 开始,两者都在同一天。我不知道如果第一个计划的备份时间大于 30 分钟会发生什么。我假设第二个计划仍然会开始并且可能会破坏数据库,因为第一个计划没有完成并且数据库没有更新。在这种情况下我该怎么办?


慕慕森
浏览 137回答 1
1回答

蛊毒传说

您可以使用自定义名称创建线程并将您的备份进程放入。下次你试着按名字找到他的时候。如果他会被找到 - gackup 正在工作。&nbsp; &nbsp; Set<Thread> threads = Thread.getAllStackTraces().keySet();&nbsp; &nbsp; boolean isWorking = threads.stream().anyMatch(t -> t.getName().equals("My backup is working"));&nbsp; &nbsp; if (!isWorking) {&nbsp; &nbsp; &nbsp; &nbsp; Runnable task = () -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread.currentThread().setName("My backup is working");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //some code of run backup&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("start backup");&nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; &nbsp; Thread thread = new Thread(task);&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Done!");&nbsp; &nbsp; &nbsp; &nbsp; thread.start();&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java