日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ScheduledExecutorService

發布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ScheduledExecutorService 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ScheduledExecutorService接口 在ExecutorService的基礎上,ScheduledExecutorService提供了按時間安排執行任務的功能,它提供的方法主要有:
  • schedule(task,initDelay):安排所提交的Callable或Runnable任務在initDelay指定的時間后執行。
  • scheduleAtFixedRate():安排所提交的Runnable任務按指定的間隔重復執行
  • scheduleWithFixedDelay():安排所提交的Runnable任務在每次執行完后,等待delay所指定的時間后重復執行。 代碼:ScheduleExecutorService的例子
  • import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.ScheduledFuture;
    import java.util.concurrent.TimeUnit;

    public class ScheduledExecutorServiceTest
    {
    ?????? public static void main(String[] args) throws InterruptedException,ExecutionException
    ?????? {
    ????????????? //*1
    ?????????????? ScheduledExecutorService service=Executors.newScheduledThreadPool(2);
    ?????????????? //*2
    ?????????????? Runnable task1=new Runnable()
    ?????????????? {
    ??????????????????? public void run()
    ??????????????????? {
    ?????????????????????? System.out.println("Taskrepeating.");
    ??????????????????? }
    ?????????????? };
    ?????????????? //*3
    ?????????????? final ScheduledFuture future1=service.scheduleAtFixedRate(task1,0,1,TimeUnit.SECONDS);
    ?????????????? //*4
    ?????????????? ScheduledFuture future2=service.schedule(new Callable()
    ??????????? {
    ??????????????????? public String call()
    ??????????????????? {
    ??????????????????????????? future1.cancel(true);
    ??????????????????????????? return "taskcancelled!";
    ??????????????????? }
    ?????????????? },10,TimeUnit.SECONDS);
    ?????????????? System.out.println(future2.get());
    ???? //*5
    ???? service.shutdown();
    ?? }
    }

  • 這個例子有兩個任務,第一個任務每隔一秒打印一句“Taskrepeating”,第二個任務在5秒鐘后取消第一個任務。

    *1:初始化一個ScheduledExecutorService對象,這個對象的線程池大小為2。 *2:用內函數的方式定義了一個Runnable任務。 *3:調用所定義的ScheduledExecutorService對象來執行任務,任務每秒執行一次。能重復執行的任務一定是 Runnable類型。注意我們可以用TimeUnit來制定時間單位,這也是Java5.0里新的特征,5.0以前的記時單位是微秒,現在可精確到奈秒。 *4:調用ScheduledExecutorService對象來執行第二個任務,第二個任務所作的就是在5秒鐘后取消第一個任務。

    *5:關閉服務。

總結

以上是生活随笔為你收集整理的ScheduledExecutorService的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。