国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java多線程Future和Callable類示例分享

2019-11-26 14:41:13
字體:
來源:轉載
供稿:網友

一,描寫敘述

    ​在多線程下編程的時候。大家可能會遇到一種需求,就是我想在我開啟的線程都結束時,同一時候獲取每一個線程中返回的數據然后再做統一處理,在這種需求下,Future與Callable的組合就派上了非常大的用場。

也有人會說,我能夠使用同步來完畢這個需求啊,普通情況下確實能夠。可是在一種特殊情況下就不行了:

    ​想象,你開啟了多個線程同步計算一些數據,可是大家都知道,線程是會爭用資源的,也就是說。你開啟多個線程來同步計算數據時。事實上線程之間的計算順序是不可空的,當然除非你非非常大周折去處理也不無可能。在這樣的情況下。Future和Callable的組合就是不二之選了。

二,樣例

這兩個類的樣例事實上非常easy,主要就看自己在實際運用中能不能找到他們的用武之地了。上代碼:

package test; import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future; public class FetureCallableTest {  private static ExecutorService service = Executors.newFixedThreadPool(100);  private static int count = 1;  public static void main(String[] args) throws InterruptedException, ExecutionException {    int sum = 0;    for(int i = 0; i < 100; i++) {      Future<Integer> future = service.submit(new Callable<Integer>(){           @Override        public Integer call() throws Exception {          System.out.println(Thread.currentThread().getName());          return ++count;        }               });      int f = future.get();      sum += f;      System.out.println("future is " + f);    }    System.out.println("sum is " + sum);    service.shutdownNow();  } }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邢台县| 古蔺县| 新田县| 阿克陶县| 方城县| 宾川县| 黄陵县| 房山区| 婺源县| 高平市| 达日县| 镇坪县| 日土县| 丹江口市| 鄂尔多斯市| 远安县| 疏附县| 宿迁市| 鸡泽县| 太湖县| 萍乡市| 满城县| 黑山县| 治多县| 闵行区| 民乐县| 会昌县| 鸡东县| 从江县| 玛多县| 溆浦县| 郓城县| 绥棱县| 巴塘县| 泸西县| 山阴县| 保亭| 岢岚县| 罗平县| 阳山县| 龙口市|