我需要每隔幾個小時執行一次任務,我正在尋找最有效的解決方案。我想到了兩種方法:調度任務與忙等待
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? – fvu
相關:http://stackoverflow.com/questions/5357033/background-timer-task-in-jsp-servlet-web-application/5357856#5357856絕對不會忙着等待。 – BalusC
我喜歡EE 6 – Karusmeister