2021-03-18 分類: 網(wǎng)站建設
ScheduledExecutorService,是基于線程池設計的定時任務類,每個調(diào)度任務都會分配到線程池中的一個線程去執(zhí)行,也就是說任務是并發(fā)執(zhí)行互不影響。
需要注意:只有當調(diào)度任務來的時候,ScheduledExecutorService才會真正啟動一個線程,其余時間ScheduledExecutorService都是出于輪詢?nèi)蝿盏臓顟B(tài)。
1、線程任務
class MyScheduledExecutor implements Runnable { private String jobName; MyScheduledExecutor() { } MyScheduledExecutor(String jobName) { this.jobName = jobName; } @Override public void run() { System.out.println(jobName + " is running"); } }
2、定時任務
public static void main(String[] args) { ScheduledExecutorService service = Executors.newScheduledThreadPool(10); long initialDelay = 1; long period = 1; // 從現(xiàn)在開始1秒鐘之后,每隔1秒鐘執(zhí)行一次job1 service.scheduleAtFixedRate(new MyScheduledExecutor("job1"), initialDelay, period, TimeUnit.SECONDS); // 從現(xiàn)在開始2秒鐘之后,每隔2秒鐘執(zhí)行一次job2 service.scheduleWithFixedDelay(new MyScheduledExecutor("job2"), initialDelay, period, TimeUnit.SECONDS); }
ScheduledExecutorService 中兩種最常用的調(diào)度方法 ScheduleAtFixedRate 和 ScheduleWithFixedDelay。ScheduleAtFixedRate 每次執(zhí)行時間為上一次任務開始起向后推一個時間間隔,即每次執(zhí)行時間為 :initialDelay, initialDelay+period, initialDelay+2*period, …;ScheduleWithFixedDelay 每次執(zhí)行時間為上一次任務結束起向后推一個時間間隔,即每次執(zhí)行時間為:initialDelay, initialDelay+executeTime+delay, initialDelay+2*executeTime+2*delay。由此可見,ScheduleAtFixedRate 是基于固定時間間隔進行任務調(diào)度,ScheduleWithFixedDelay 取決于每次任務執(zhí)行的時間長短,是基于不固定時間間隔進行任務調(diào)度。
網(wǎng)站名稱:【教程】如何使用ScheduledExecutorService?
網(wǎng)頁地址:http://jinyejixie.com/news/105381.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、建站公司、自適應網(wǎng)站、網(wǎng)頁設計公司、商城網(wǎng)站、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容