1
ScheduledExecutorService似乎有一個問題,即如果無法獲得空閒線程,則週期性任務將延遲發生。不幸的是,對我來說,分配給它的週期性任務確實需要按計劃進行。目前它每分鐘計劃一次,但有時由於應用程序忙於其他事情(我認爲這是爲什麼),它不能在五分鐘內完成,而五分鐘恰好是「主要生產錯誤」閾值。在Java應用程序中強制定期執行週期性任務
如何通過優先排序或以其他方式控制線程平衡器來強制執行此操作?
ScheduledExecutorService似乎有一個問題,即如果無法獲得空閒線程,則週期性任務將延遲發生。不幸的是,對我來說,分配給它的週期性任務確實需要按計劃進行。目前它每分鐘計劃一次,但有時由於應用程序忙於其他事情(我認爲這是爲什麼),它不能在五分鐘內完成,而五分鐘恰好是「主要生產錯誤」閾值。在Java應用程序中強制定期執行週期性任務
如何通過優先排序或以其他方式控制線程平衡器來強制執行此操作?
如果您的ScheduledExecutorService用於其他任務,或者您的任務有時需要超過1分鐘才能運行,則可以簡單地增加ScheduledExecutorService中可用的線程數。所以如果一個任務沒有完成,執行者仍然可以運行一個新任務。
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
(我挑10個隨機 - 如果你運行你的任務每分鐘,它可以長達5分鐘運行一次,留下你的錯誤一定餘量)
用於任何東西,但你的ScheduledExecutorService的任務?你的任務總是在不到1分鐘內運行? – assylias 2012-08-06 22:16:08
沒有足夠的信息。你怎麼實際上調度線程?顯示一些代碼。 – 2012-08-06 22:16:42
@assylias - 賓果。還有一項任務需要花費很長時間,而且我的程序只能使用一個線程,所以我可以避免一些併發編碼問題。我可以通過將其移動到單獨的執行器服務來解決。您可以將此作爲答案發布,我會接受,因爲他們確實有兩個要問的問題。 – djechlin 2012-08-06 22:18:43