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