我想做以下事情。我计算了我的程序中事件的发生。我希望实现的是,在每小时结束时(在MST中,即我所在的时区),计数将被记录在该小时的数据库中。我只需要一个代码片段,它将在每小时结束时执行。请注意,我不希望线程处于休眠状态,因为我还需要在事件发生时更新计数。
答案 0 :(得分:0)
您可以实现TimerTask以便搜索它。或者如果你可以使用Quartz。谷歌搜索应该是你的第一站。
答案 1 :(得分:0)
在Java中,没有办法确保Runnable
在给定时间完全执行。
您只能安排Runnable以大约给定时间间隔执行。如果这对您来说足够了,那么java.util.Timer
或Executors.newSingleThreadScheduledExecutor()
就足够了。您只需要将计数器放在线程安全和原子变量中(AtomicInteger
可能就足够了,具体取决于您期望拥有的数字)。
如果你想要具有极高的精确度,那么你最好修改你的事件处理程序,这样,在记录事件之前,它会检查它是哪个小时,并且根据它,它在内部使用不同的“槽”一个队列。最后,您的计划任务将收集旧的队列插槽,将其从队列中删除并存储到数据库。 (我认为这是过分的,但这取决于你)。