0

我正在制作一个会议广播应用程序,它将向会议参与者广播消息。有一个会议数据检查线程,在 5 分钟后执行。我已经使用此代码完成了此操作:

 ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
 scheduledExecutorService.scheduleWithFixedDelay(new DataAccessSchedule(), 0, 5,TimeUnit.MINUTES);

现在在 DataAccessScedule 中查询得到了预计在 15 分钟后开始的会议数据,所以我得到了 15 分钟之前的数据,表中的时间是:01:45,... 01:50,... 01:52 ,..

所以我通过与当前时间的差异计算了所有的时间,以毫秒为单位,所以现在以 milis 为单位的时间是 x、y 和 z。我想在 x 、 y 和 z 时间触发线程,这些线程在执行后会自行销毁。我不想像上面那样使用 Executors 在这里运行调度程序。请告诉我该怎么做?

4

1 回答 1

0

为此,您需要一个调度程序库,例如Quartz Scheduler,它支持cron表达式以准确指定何时启动任务。

您还可以将其配置为运行任务有限次数。

编写调度程序库的另一种方法是自己编写类似的功能。您需要以您需要的精度(可能是 1 分钟,也可能是 1 秒)定期运行一项任务,并检查数据结构中的所有条目,如果它们的开始条件与当前日期匹配(例如,通过匹配日期/time 针对cron表达式)。但是,这将是重新发明轮子,所以如果您不想要现有库不提供的一些额外功能,请不要做那么久。

于 2013-07-12T05:21:05.973 回答