<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            java語言

            java自定義任務類定時執行任務

            時間:2025-03-30 21:09:35 java語言 我要投稿
            • 相關推薦

            java自定義任務類定時執行任務范本

              Callable 和 Future接口

              Callable是類似于Runnable的接口,實現Callable接口的類和實現Runnable的類都是可被其它線程執行的任務。

              Callable和Runnable有幾點不同:

              (1)Callable規定的方法是call(),而Runnable規定的方法是run().

              (2)Callable的任務執行后可返回值,而Runnable的任務是不能返回值的。

              (3)call()方法可拋出異常,而run()方法是不能拋出異常的。

              (4)運行Callable任務可拿到一個Future對象, Future表示異步計算的結果。

              它提供了檢查計算是否完成的方法,以等待計算的完成,并檢索計算的結果。

              通過Future對象可了解任務執行情況,可取消任務的執行,還可獲取任務執行的結果。

              復制代碼 代碼如下:

              package com.yao;

              import java.util.concurrent.Callable;

              import java.util.concurrent.ExecutorService;

              import java.util.concurrent.Executors;

              import java.util.concurrent.Future;

              public class CallableAndFuture {

              /**

              * 自定義一個任務類,實現Callable接口

              */

              public static class MyCallableClass implements Callable {

              // 標志位

              private int flag = 0;

              public MyCallableClass(int flag) {

              this.flag = flag;

              }

              public String call() throws Exception {

              if (this.flag == 0) {

              // 如果flag的值為0,則立即返回

              return "flag = 0";

              }

              if (this.flag == 1) {

              // 如果flag的值為1,做一個無限循環

              try {

              while (true) {

              System.out.println("looping......");

              Thread.sleep(2000);

              }

              } catch (InterruptedException e) {

              System.out.println("Interrupted");

              }

              return "false";

              } else {

              // falg不為0或者1,則拋出異常

              throw new Exception("Bad flag value!");

              }

              }

              }

              public static void main(String[] args) {

              // 定義3個Callable類型的任務

              MyCallableClass task1 = new MyCallableClass(0);

              MyCallableClass task2 = new MyCallableClass(1);

              MyCallableClass task3 = new MyCallableClass(2);

              // 創建一個執行任務的服務

              ExecutorService es = Executors.newFixedThreadPool(3);

              try {

              // 提交并執行任務,任務啟動時返回了一個Future對象,

              // 如果想得到任務執行的結果或者是異常可對這個Future對象進行操作

              Future future1 = es.submit(task1);

              // 獲得第一個任務的結果,如果調用get方法,當前線程會等待任務執行完畢后才往下執行

              System.out.println("task1: " + future1.get());

              Future future2 = es.submit(task2);

              // 等待5秒后,再停止第二個任務。因為第二個任務進行的是無限循環

              Thread.sleep(5000);

              System.out.println("task2 cancel: " + future2.cancel(true));

              // 獲取第三個任務的輸出,因為執行第三個任務會引起異常

              // 所以下面的語句將引起異常的拋出

              Future future3 = es.submit(task3);

              System.out.println("task3: " + future3.get());

              } catch (Exception e) {

              System.out.println(e.toString());

              }

              // 停止任務執行服務

              es.shutdownNow();

              }

              }

            【java自定義任務類定時執行任務】相關文章:

            Java自定義簡單標簽實例01-12

            Java自定義范型的應用技巧03-06

            Java的類07-19

            PHP實現定時任務的幾種方式和詳解05-20

            java類的構成08-02

            Java的類常識03-29

            java注冊成windows服務程序及簡單java定時關機的程序代碼07-02

            Java import以及Java類的搜索路徑12-24

            Java類加載器類介紹06-13

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院