我需要每隔几个小时执行一次任务,我正在为此寻找最有效的解决方案。我想到了两种方法:
1)忙着等待
while(true){
doMyJob()
wait(2*hour);
}
2)执行者调度:
executor.schedule(new MyJobTask(),2,TimeUnit.HOUR);
...
class MyJobTask implements Runnable{
void run(){
doMyJob();
...
executor.schedule(new MyJobTask(),2,TimeUnit.HOUR);
}
您能否告诉我哪种解决方案更有效,以及在什么情况下它们更可取(如果有的话)。直觉上,我会选择第二种解决方案,但我找不到任何东西来证明我的直觉。如果您有其他解决方案 - 请分享。解决方案也应该是内存高效的(这就是为什么我有一个两难选择 - 我是否需要创建和保留一个 ThreadPool 对象只是为了每两个小时做一个简单的工作)。