因爲我每秒都在執行時間關鍵型任務,所以我比較了幾種方法來找到確保我的任務在固定時間步驟中真正執行的最佳方法。在計算所有方法的誤差標準推導之後,似乎使用方法scheduledExecutorService.scheduleAtFixedRate()
可以獲得最佳結果,但我不知道爲什麼會這樣。方法scheduledExecutorService.scheduleAtFixedRate()如何確保實時執行?
有沒有人知道該方法內部工作?例如,與簡單的sleep()
相比,它如何確保引用的任務在固定的時間步驟中真正執行?
因爲這個類經常在內部使用其他類,所以我很難遵循它。但我認爲這可能是相關的: 我發現任務被放入一個PriorityQueue中,它可能按優先級排序任務,這意味着它們的預期執行時間。因此,似乎確實沒有實時保證。 但爲什麼這種方法比睡眠(速度)更好?也許這個隊列能夠以比例如垃圾收集器更高的優先級運行線程,以便能夠近乎實時地執行任務? – Markus 2009-10-03 15:10:01
你的意思是「據我所知沒有任何保證」? – 2012-01-16 22:00:42