目標:每隔一段時間執行一次代碼。Thread.sleep()VS Executor.scheduleWithFixedDelay()
問題:在性能方面,有沒有之間的差異顯著:
while(true) {
execute();
Thread.sleep(10 * 1000);
}
和
executor.scheduleWithFixedDelay(runnableWithoutSleep, 0, 10, TimeUnit.SECONDS);
?
當然,後面的選項更加猶太教。然而,我想知道我是否應該開始一個名爲「花費幾天重構遺留代碼來告別Thread.sleep()」的冒險。
更新: 此代碼在超級/超級/超高負載環境中運行。
採取我認爲兩者是相同的,'scheduleWithFixedDelay'封裝sleep調用。 –
@喬伊:它們並不完全相同,因爲計劃的執行程序可以執行許多計劃任務,並以比任務數量少的線程運行它們。如果你只是使用睡眠,你必須爲每個「安排」任務設置一個線程。 –
你爲什麼要問一個* sleep *操作的性能? – Dan