【发布时间】:2012-06-22 20:26:38
【问题描述】:
我需要每隔几个小时执行一次任务,我正在为此寻找最有效的解决方案。我想到了两种方法:
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 对象只是为了每两个小时做一个简单的工作)。
【问题讨论】:
-
您必须使用什么 EE 规范? 1.4、5 还是 6?
-
Related: stackoverflow.com/questions/5357033/… 绝对不要忙着等待。
标签: java jakarta-ee scheduled-tasks threadpool