1、創(chuàng)建方式
ScheduleExectorService exector = Exector.newScheduledThreadPool(size)
2、方法使用
Schedule(Callback call,long delay,TimeUnit unit)
call : 執(zhí)行任務(wù)
delay:延時(shí)時(shí)間
unit:延時(shí)時(shí)間的單位(毫秒、秒、分鐘、小時(shí)等)
Schedule(Runable run ,long delay,TimeUnit unit)
run :執(zhí)行任務(wù)
delay:延時(shí)時(shí)間
unit:延時(shí)時(shí)間的單位
ScheduleAtFixedRate(Runable run,long initialDelay,long period,TimeUnit unit)
run:待執(zhí)行的任務(wù)
initialDelay:間隔時(shí)間(間隔多長時(shí)間開始執(zhí)行第一次任務(wù))
period:間隔時(shí)間(1、每一次執(zhí)行任務(wù)的間隔時(shí)間。2、此時(shí)間不能小于或等于0,否則會出現(xiàn)異常IllegalArgumentException)
unit:間隔時(shí)間的單位
ScheduleWithFixedDelay(Runable run,long initialDelay,long period,TimeUnit unit)
run:待執(zhí)行的任務(wù)
initialDelay:間隔時(shí)間(間隔多長時(shí)間開始執(zhí)行第一次任務(wù))
period:間隔時(shí)間(1、每一次執(zhí)行任務(wù)的間隔時(shí)間。2、此時(shí)間不能小于或等于0,否則會出現(xiàn)異常IllegalArgumentException)
unit:間隔時(shí)間的單位
3、其中ScheduleAtFixedRate()和ScheduleWithFixedDelay()的區(qū)別和共性:
?共性: 功能相同,都是在規(guī)定的時(shí)間間隔內(nèi)執(zhí)行相對應(yīng)的任務(wù); 如果當(dāng)前任務(wù)未完成執(zhí)行,不會開啟下一個(gè)任務(wù),保證相同任務(wù)未執(zhí)行完成情況下不會開啟下一個(gè)相同的任務(wù) 區(qū)別: ScheduleAtFixedRate():任務(wù)的執(zhí)行消耗時(shí)間包含在時(shí)間間隔中(此處的時(shí)間間隔指period),例如: I、任務(wù)的執(zhí)行時(shí)間是7s,時(shí)間間隔是3s,此時(shí)時(shí)間間隔小于任務(wù)執(zhí)行時(shí)間,這下一個(gè)任務(wù)會在7s后當(dāng)前任務(wù)執(zhí)行完成,接著就會執(zhí)行下一次的任務(wù),中間不會再有時(shí)間間隔; II、任務(wù)的執(zhí)行時(shí)間是2s,時(shí)間間隔是3s,此時(shí)時(shí)間間隔大于任務(wù)執(zhí)行時(shí)間,此時(shí)下一個(gè)任務(wù)會在2s后上一個(gè)任務(wù)執(zhí)行完成,間隔1s執(zhí)行下一次的任務(wù); III、任務(wù)的執(zhí)行時(shí)間是3s,時(shí)間間隔是3s,此時(shí)時(shí)間間隔等于任務(wù)執(zhí)行時(shí)間,此時(shí)下一個(gè)任務(wù)會在3s后上一個(gè)任務(wù)執(zhí)行完成,接著執(zhí)行下一次的任務(wù),中間同樣不會存在時(shí)間間隔。 ScheduleWithFixedDelay():任務(wù)的執(zhí)行消耗時(shí)間不包含時(shí)間間隔(此處的時(shí)間間隔指period),例如: 任務(wù)的執(zhí)行時(shí)間是7s,時(shí)間間隔是3秒,此時(shí)時(shí)間間隔小于任務(wù)執(zhí)行時(shí)間,此時(shí)下一個(gè)任務(wù)會在7s后當(dāng)前任務(wù)執(zhí)行完成,間隔3s執(zhí)行下一個(gè)任務(wù)。其余情況都于此情況相同。任務(wù)都是在上一個(gè)任務(wù)執(zhí)行完成后,在開始計(jì)算時(shí)間間隔。 ? 文章簡單粗暴的介紹?了周期性線程池的使用、方法、以及常見的問題,希望對大家有用。
本文摘自 :https://blog.51cto.com/w