国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java Callable與Future的詳解及實(shí)例

java Callable與Future的詳解及實(shí)例

2020-07-28 14:26java教程網(wǎng) Java教程

這篇文章主要介紹了java Callable與Future的詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下

java  CallableFuture

Callable與 Future 兩功能是Java在后續(xù)版本中為了適應(yīng)多并法才加入的,Callable是類似于Runnable的接口,實(shí)現(xiàn)Callable接口的類和實(shí)現(xiàn)Runnable的類都是可被其他線程執(zhí)行的任務(wù)。

Callable的接口定義如下;

?
1
2
3
4
5
public interface Callable<V> {
 
   V  call()  throws Exception;
<span id="transmark"></span>
}

Callable和Runnable的區(qū)別如下:

I    Callable定義的方法是call,而Runnable定義的方法是run。

II   Callable的call方法可以有返回值,而Runnable的run方法不能有返回值。

III  Callable的call方法可拋出異常,而Runnable的run方法不能拋出異常。 

Future 介紹

Future表示異步計(jì)算的結(jié)果,它提供了檢查計(jì)算是否完成的方法,以等待計(jì)算的完成,并檢索計(jì)算的結(jié)果。Future的cancel方法可以取消任務(wù)的執(zhí)行,它有一布爾參數(shù),參數(shù)為 true 表示立即中斷任務(wù)的執(zhí)行,參數(shù)為 false 表示允許正在運(yùn)行的任務(wù)運(yùn)行完成。Future的 get 方法等待計(jì)算完成,獲取計(jì)算結(jié)果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import java.util.concurrent.Callable;
 
import java.util.concurrent.ExecutorService;
 
import java.util.concurrent.Executors;
 
import java.util.concurrent.Future;
 
/**
 
 * Callable 和 Future接口
 
 * Callable是類似于Runnable的接口,實(shí)現(xiàn)Callable接口的類和實(shí)現(xiàn)Runnable的類都是可被其它線程執(zhí)行的任務(wù)。
 
 * Callable和Runnable有幾點(diǎn)不同:
 
 * (1)Callable規(guī)定的方法是call(),而Runnable規(guī)定的方法是run().
 
 * (2)Callable的任務(wù)執(zhí)行后可返回值,而Runnable的任務(wù)是不能返回值的。
 
 * (3)call()方法可拋出異常,而run()方法是不能拋出異常的。
 
 * (4)運(yùn)行Callable任務(wù)可拿到一個(gè)Future對(duì)象,
 
 * Future 表示異步計(jì)算的結(jié)果。它提供了檢查計(jì)算是否完成的方法,以等待計(jì)算的完成,并檢索計(jì)算的結(jié)果。
 
 * 通過Future對(duì)象可了解任務(wù)執(zhí)行情況,可取消任務(wù)的執(zhí)行,還可獲取任務(wù)執(zhí)行的結(jié)果。
 
 */
 
public class CallableAndFuture {
 
  public static class MyCallable implements Callable{
 
     private int flag = 0;
 
     public MyCallable(int flag){
 
         this.flag = flag;
 
     }
 
     public String call() throws Exception{
 
       if (this.flag == 0){
 
           return "flag = 0";
 
      }
 
      if (this.flag == 1){ 
 
        try {
 
          while (true) {
 
              System.out.println("looping.");
 
              Thread.sleep(2000);
 
          }
 
        } catch (InterruptedException e) {
 
               System.out.println("Interrupted");
 
        }
 
        return "false";
 
      } else
 
            throw new Exception("Bad flag value!");
 
      }
 
    }
 
  }
 
  public static void main(String[] args) {
 
    // 定義3個(gè)Callable類型的任務(wù)
 
    MyCallable task1 = new MyCallable(0);
 
    MyCallable task2 = new MyCallable(1);
 
    MyCallable task3 = new MyCallable(2);
 
    
 
    // 創(chuàng)建一個(gè)執(zhí)行任務(wù)的服務(wù)
 
    ExecutorService es = Executors.newFixedThreadPool(3);
 
    try {
 
      // 提交并執(zhí)行任務(wù),任務(wù)啟動(dòng)時(shí)返回了一個(gè)Future對(duì)象,
 
      // 如果想得到任務(wù)執(zhí)行的結(jié)果或者是異常可對(duì)這個(gè)Future對(duì)象進(jìn)行操作
 
      Future future1 = es.submit(task1);
 
      // 獲得第一個(gè)任務(wù)的結(jié)果,如果調(diào)用get方法,當(dāng)前線程會(huì)等待任務(wù)執(zhí)行完畢后才往下執(zhí)行
 
      System.out.println("task1: " + future1.get());
 
      
 
      Future future2 = es.submit(task2);
 
      // 等待5秒后,再停止第二個(gè)任務(wù)。因?yàn)榈诙€(gè)任務(wù)進(jìn)行的是無限循環(huán)
 
      Thread.sleep(5000);
 
      System.out.println("task2 cancel: " + future2.cancel(true));
 
      
 
      // 獲取第三個(gè)任務(wù)的輸出,因?yàn)閳?zhí)行第三個(gè)任務(wù)會(huì)引起異常
 
      // 所以下面的語句將引起異常的拋出
 
      Future future3 = es.submit(task3);
 
      System.out.println("task3: " + future3.get());
 
    } catch (Exception e){
 
      System.out.println(e.toString());
 
    }
 
    // 停止任務(wù)執(zhí)行服務(wù)
 
    es.shutdownNow();
 
  }
 
}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品一区二区久久 | 国产一级高清视频 | 午夜影院黄色 | 理论电影在线 | 毛片a级毛片免费 | 免费av观看 | 欧美精品v国产精品v日韩精品 | 无毛av| 亚洲欧洲精品成人久久奇米网 | 国产成人精品一区二区三区四区 | 久久久久久久久久久动漫 | 国产精品永久久久久久久久久 | 91亚洲国产精品 | 国产成人精品免高潮在线观看 | 免费大片黄在线观看 | 日本一区二区三区四区 | av免费黄色| 久久久www | 在线国产视频 | 九一视频在线免费观看 | 欧美精品一区二区三区四区 | 久久精品国产亚洲 | 亚洲色图一区二区三区 | 一区电影| 亚洲伊人久久综合 | 玖玖玖视频 | 这里只有精品视频 | 免费簧片 | 欧美日韩国产在线播放 | 亚洲精品视频网站在线观看 | 中文字幕国产视频 | 成人a在线视频免费观看 | 久久99视频精品 | 福利片在线免费观看 | 日韩中文字幕 | 岛国一区 | 日韩成人高清视频 | 极品美女销魂一区二区三区 | 久久影院久久 | 国产一区二区三区在线免费看 | 米奇影视7777 |