繁体   English   中英

如何配置在给定时间执行的线程

[英]How to configure a thread that execute on a given time

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

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

现在在DataAccessScedule中查询将获取预计在15分钟后开始的会议数据,因此我在15分钟之前获取了数据,表中的时间为:01:45,... 01:50,... 01:52,..

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM