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