日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

JAVA.util.concurrent.ScheduledExecutorService是一個可以安排任務延遲執行的 ExecutorService , 或者以固定的時間間隔重復執行。任務通過一個工作線程異步執行,而不是提交任務到ScheduledExecutorService的線程。

ScheduledExecutorService例子

下面是ScheduledExecutorService例子:

ScheduledExecutorService scheduledExecutorService =
        Executors.newScheduledThreadPool(5);
 
ScheduledFuture scheduledFuture =
    scheduledExecutorService.schedule(new Callable() {
        public Object call() throws Exception {
            System.out.println("Executed!");
            return "Called!";
        }
    },
    5,
    TimeUnit.SECONDS);

首先,創建一個容納5個線程的.然后,創建了Callable 接口的一個匿名類作為參數提交到Callable。

ScheduledExecutorService實現

既然ScheduledExecutorService是個接口, ava.util.concurrent包中的ScheduledExecutorService 的類實現了該接口:

  • ScheduledThreadPoolExecutor

創建ScheduledExecutorService

創建 ScheduledExecutorService 取決于你用哪種實現,當然也可以Executors 的工廠方法創建ScheduledExecutorService 實例,下面是代碼:

ScheduledExecutorService scheduledExecutorService =
 
        Executors.newScheduledThreadPool(5);

ScheduledExecutorService用法

一旦創建了 ScheduledExecutorService,可以用下面方法 :

  • schedule (Callable task, long delay, TimeUnit timeunit)
  • schedule (Runnable task, long delay, TimeUnit timeunit)
  • scheduleAtFixedRate (Runnable, long initialDelay, long period, TimeUnit timeunit)
  • scheduleWithFixedDelay (Runnable, long initialDelay, long period, TimeUnit timeunit)

下面一一講解這些方法:

schedule (Callable task, long delay, TimeUnit timeunit)

這個方法安排給定得 Callable 延遲執行,這方法返回ScheduledFuture ,可以用于在任務未執行前取消任務或者當執行完了獲取返回結果,下面是代碼:

ScheduledExecutorService scheduledExecutorService =
        Executors.newScheduledThreadPool(5);
 
ScheduledFuture scheduledFuture =
    scheduledExecutorService.schedule(new Callable() {
        public Object call() throws Exception {
            System.out.println("Executed!");
            return "Called!";
        }
    },
    5,
    TimeUnit.SECONDS);
 
System.out.println("result = " + scheduledFuture.get());
 
scheduledExecutorService.shutdown();

輸出結果:

Executed!
result = Called!

schedule (Runnable task, long delay, TimeUnit timeunit)

這個方法類似于上面得方法,但是沒有返回結果,所以任務完成 ScheduledFuture.get()將返回null。

scheduleAtFixedRate (Runnable, long initialDelay, long period, TimeUnit timeunit)

這個方法安排任務間隔執行,任務首次在initialDelay以后執行,然后每次間隔initialDelay執行。如果任何一次拋異常,那么任務不再執行,如果沒有異常,任務一直執行直到ScheduledExecutorService 關閉,如果當前線程執行時間很長,那么下一個任務要等到這個任務執行完成,在同一時間只執行一個任務。

scheduleWithFixedDelay (Runnable, long initialDelay, long period, TimeUnit timeunit)

這個方法和 scheduleAtFixedRate()非常相似,只是時間段有不同的解釋。

在scheduleAtFixedRate()方法中,周期被解釋為從上一次執行開始到下一次執行開始之間的延遲。

然而,在這種方法中,周期被解釋為上一次執行結束到下一次執行開始之間的延遲。因此,延遲是在完成執行之間,而不是在執行開始之間。

ScheduledExecutorService Shutdown

和 ExecutorService一樣, 當任務執行完畢 ScheduledExecutorService需要關閉,如果不關閉,一直在JVM中運行,盡管其他線程已經關閉。

關閉ScheduledExecutorService用shutdown() 或者 shutdownNow() 方法,這兩個方法是從ExecutorService接口繼承得, 可以查看前面文章 ExecutorService 中得Shutdown 。

參考:https://blog.csdn.net/cgsyck/article/details/107692471

http://tutorials.jenkov.com/java-util-concurrent/scheduledexecutorservice.html

https://blog.csdn.net/cgsyck/article/details/107769550

分享到:
標簽:并發 JAVA
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定