1
我有一個需要按計劃執行的任務。 (它基本上輪詢數據庫尋找變化,然後根據結果執行代碼)。問題是我需要輪詢的任務發生,即使它已經在執行。Java線程任務的併發執行
到目前爲止,我已經嘗試使用scheduleAtFixedRate()
方法和帶有scheduleAtFixedRate()
方法的ScheduledThreadPoolExecutor/Thread組合與Timer/TimerTask組合。
都在等待當前計劃的任務完成後才能運行下一個。我需要能夠安排任務每5秒運行一次,並在任務的最後一次執行尚未完成時運行。
任何想法?
這是工作,但如果其中一個線程從池中產生一個異常(即使我趕上它)它似乎取消「啓動」定時器並阻止它輪詢。 – Tom 2010-09-06 11:10:47
@Tom:這看起來不太可能,因爲到那時它將處於不同的線程。如果您可以提供一個簡短但完整的程序來證明問題,那將有所幫助。 – 2010-09-06 11:25:18
我剛剛意識到是什麼導致了這個問題。實際上,當一個異常引發了外觀已掛起的異常時,我並未從活動線程列表中刪除該線程。謝謝你的幫助! :) – Tom 2010-09-06 11:33:46