0

我正在创建一个将在后台连续运行的 java 服务,该服务的工作是在特定日期创建表的副本。确切地说,我从某个表中读取数据,如果表中的 record_date 与当前日期匹配,我需要创建表副本。然后服务应该休眠到下一个运行日期。下一个运行日期也是通过查看表中的记录来确定的。

目前,我如何做到这一点,是创建一个在 while(true) 循环中运行的线程。当线程完成执行任务,即创建表副本时,我使用 Thread.sleep() 让它进入睡眠状态,直到它下次需要运行。线程休眠的毫秒数,我通过计算当前日期(线程执行任务的日期)和下一次运行日期之间的差异来计算。

这是正确的方法吗,在这个特定场景中使用 thread.sleep() 是正确的吗?我这样说是因为线程的下一次运行日期可能在三个月甚至一年之后。如果我在这里不是很清楚,也请告诉我。

4

3 回答 3

2

剖析这两个操作怎么样?

  1. 编写一个 Java 作业,当调用时检查表中的日期并创建一个副本。
  2. 安排 java 作业以您希望的方式运行。

由于我们 UNIXcron对我们执行此类任务有很大帮助。

于 2012-10-16T14:06:47.467 回答
0

看看Lock界面。这是wait()and的抽象notify(),你应该使用它来代替sleep().

这里有一个答案说明了原因。

于 2012-10-16T14:19:48.993 回答
0

查看 Java Timer API 或 Quartz 库

于 2012-10-17T03:37:26.680 回答