我正在制作一个会议广播应用程序,它将向会议参与者广播该消息。 会议数据检查线程在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运行调度程序。 请告诉我该怎么做?
答案 0 :(得分:0)
您需要一个调度程序库,例如Quartz Scheduler,它支持 cron 表达式,以准确指定应该何时启动任务。
您还可以将其配置为有限次数运行任务。
编写sheduler库的另一种方法是自己编写类似的功能。您需要定期运行一个任务,具有您需要的精度(可能是1分钟,但也是1秒)并检查数据结构中的所有条目,如果它们的开始条件与当前日期匹配(例如,通过匹配日期/时间对 cron 表达式)。然而,如果你不想要现有的图书馆没有提供的额外功能,那么重新发明轮子就不要那么久。