【问题标题】:What is the best approach. Executor framework or a normal thread ? Thread has to be designed to run once every hour and do a batch operation? [closed]什么是最好的方法。执行器框架还是普通线程?线程必须设计为每小时运行一次并执行批处理操作? [关闭]
【发布时间】:2013-03-18 10:28:47
【问题描述】:

我正在考虑在每次操作后让线程休眠 1 小时。一种while循环运行。

【问题讨论】:

标签: java multithreading concurrency


【解决方案1】:

当您想以特定间隔运行任务时,您应该定期使用java.util.Timer 类到scheduleAtFixedRatejava.util.TimerTask

当你在完成任务后让线程休眠一小时,那么间隔实际上是一小时加上执行时间,而不是一小时。即使您的批处理任务只需要几秒钟,时间差也会随着时间的推移而累积。

这意味着随着时间的推移,您的任务运行的实际时间将变得越来越难以预测。我不知道批处理在可预测的时刻发生或每周准确执行 168 次对您的用例有多重要,但是当它很重要时,使用睡眠的解决方案会非常糟糕。

【讨论】:

  • 同意。我会使用定时器。 :)
【解决方案2】:

简单的方法应该是使用ScheduledExecutorService.scheduleAtFixedRate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多