首先ScheduledExecutorService基于ExecutorService,是一個完整的線程池調度。另外在提供線程池的基礎上增加了四個調度任務的API。
- schedule(Runnable command,long delay, TimeUnit unit):在指定的延遲時間一次性啟動任務(Runnable),沒有返回值。
- schedule(Callable<V> callable, long delay, TimeUnit unit):在指定的延遲時間一次性啟動任務(Callable),攜帶一個結果。
- scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit):建并執行一個在給定初始延遲后首次啟用的定期操作,后續操作具有給定的周期;也就是將在 initialDelay 后開始執行,然后在 initialDelay+period 后執行,接著在 initialDelay + 2 * period 后執行,依此類推。如果任務的任何一個執行遇到異常,則后續執行都會被取消。否則,只能通過執行程序的取消或終止方法來終止該任務。如果此任務的任何一個執行要花費比其周期更長的時間,則將推遲后續執行,但不會同時執行。
- scheduleWithFixedDelay(Runnable command,long initialDelay,long delay,TimeUnit unit):創建并執行一個在給定初始延遲后首次啟用的定期操作,隨后,在每一次執行終止和下一次執行開始之間都存在給定的延遲。如果任務的任一執行遇到 異常,就會取消后續執行。否則,只能通過執行程序的取消或終止方法來終止該任務。