2013-01-09 79 views
1

我想要有兩個任務 - HandlerA和HandlerB分別每10秒和每20秒執行一次。 如果這種解決方案是錯誤的,那麼實現這一目標的最佳方法是什麼?ScheduledExecutorService,以不同的時間間隔安排不同的任務

ScheduledExecutorService stp = Executors.newScheduledThreadPool(8); 
stp.scheduleAtFixedRate(new HandlerA(), 0, 10, TimeUnit.SECONDS); 
stp.scheduleAtFixedRate(new HandlerB(), 0, 20, TimeUnit.SECONDS); 

是計劃中的任務覆蓋,當我安排另一個?

+5

當你嘗試時會發生什麼? – dty

+0

只執行第一個任務。我承認我的示例代碼不適合測試目的。正如我發現的那樣,第一項任務默默地失敗了,因此沒有重新安排。 –

回答

2

您的解決方案是正確的。您正在安排2個獨立的任務。您的ScheduledThreadPoolExecutor具有核心池大小= 8,這足以並行執行2個計劃任務。

1

你爲什麼問?這個解決方案很好。每次調用scheduleAtFixedRate啓動一個單獨的調度程序,即添加HandlerA兩次運行它與兩個獨立的調度程序。

相關問題