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