ScheduledThreadPoolExecutor繼承自 ThreadPoolExecutor
ScheduledThreadPoolExecutor 內(nèi)部構(gòu)造了兩個(gè)內(nèi)部類 ScheduledFutureTask 和 DelayedWorkQueue:
1. ScheduledFutureTask: 繼承了FutureTask,說明是一個(gè)異步運(yùn)算任務(wù);最上層分別實(shí)現(xiàn)了Runnable、Future、Delayed接口,說明它是一個(gè)可以延遲執(zhí)行的異步運(yùn)算任務(wù)。
2. DelayedWorkQueue: 這是 ScheduledThreadPoolExecutor 為存儲(chǔ)周期或延遲任務(wù)專門定義的一個(gè)延遲隊(duì)列,繼承了 AbstractQueue,為了契合 ThreadPoolExecutor 也實(shí)現(xiàn)了 BlockingQueue 接口。它內(nèi)部只允許存儲(chǔ) RunnableScheduledFuture 類型的任務(wù)。與 DelayQueue 的不同之處就是它只允許存放 RunnableScheduledFuture 對(duì)象,并且自己實(shí)現(xiàn)了二叉堆(DelayQueue 是利用了 PriorityQueue 的二叉堆結(jié)構(gòu))。