線程池之調(diào)度池newScheduledThreadPool

new一個(gè)線程數(shù)為4的線程池:
ScheduledExecutorService service = Executors.newScheduledThreadPool(4);
官方API提供四個(gè)方法如圖:


QQ圖片20170926152137.png

即興翻譯:

1.schedule(Callable<V> callable, long delay, TimeUnit unit)
創(chuàng)建并執(zhí)行并銷毀一個(gè)callable在延遲指定delay時(shí)間后
2.同1,callable換成了runnable
3.scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
創(chuàng)建并執(zhí)行并結(jié)束一個(gè)runnable在延遲指定initialDelay時(shí)間,然后,每隔initialDelay+period*n時(shí)間執(zhí)行一次
4.scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
創(chuàng)建并執(zhí)行并結(jié)束一個(gè)runnable在延遲指定initialDelay時(shí)間,然后第一次執(zhí)行完成后,間隔delay時(shí)間繼續(xù)執(zhí)行一次,無限循環(huán)。

測試代碼:

QQ圖片20170926153212.png

難點(diǎn):
1.scheduleAtFixedRate如果執(zhí)行時(shí)間小于指定的間隔時(shí)間的情況下,callable或runnable每隔period執(zhí)行一次,如果執(zhí)行時(shí)間大于指定的間隔時(shí)間,每隔程序執(zhí)行時(shí)間執(zhí)行一次。
2.scheduleWithFixedDelay,不管執(zhí)行時(shí)間怎么樣,兩次執(zhí)行時(shí)間之間必須間隔delay時(shí)間。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容