ScheduledThreadPoolExecutor繼承自 ThreadPoolExecutor,為任務(wù)提供延遲或周期執(zhí)行,屬于線程池的一種。和 ThreadPoolExecutor 相比,它還具有以下幾種特性:
1. 使用專門的任務(wù)類型—ScheduledFutureTask 來執(zhí)行周期任務(wù),也可以接收不需要時(shí)間調(diào)度的任務(wù)(這些任務(wù)通過 ExecutorService 來執(zhí)行)。
2. 使用專門的存儲(chǔ)隊(duì)列—DelayedWorkQueue 來存儲(chǔ)任務(wù),DelayedWorkQueue 是無界延遲隊(duì)列DelayQueue 的一種。相比ThreadPoolExecutor也簡(jiǎn)化了執(zhí)行機(jī)制(delayedExecute方法,后面單獨(dú)分析)。
3. 支持可選的run-after-shutdown參數(shù),在池被關(guān)閉(shutdown)之后支持可選的邏輯來決定是否繼續(xù)運(yùn)行周期或延遲任務(wù)。并且當(dāng)任務(wù)(重新)提交操作與 shutdown 操作重疊時(shí),復(fù)查邏輯也不相同。