国产探花免费观看_亚洲丰满少妇自慰呻吟_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();  } }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈溪市| 依兰县| 桐梓县| 安国市| 苏州市| 白水县| 池州市| 黎川县| 余庆县| 尼勒克县| 黔江区| 忻城县| 海原县| 泽普县| 蒙自县| 海口市| 南通市| 施秉县| 莆田市| 彭水| 蓬莱市| 沅江市| 聊城市| 霞浦县| 贵港市| 永寿县| 龙南县| 宜阳县| 丹巴县| 石屏县| 淮阳县| 咸宁市| 喜德县| 松溪县| 西乌珠穆沁旗| 那曲县| 河曲县| 金门县| 布拖县| 当阳市| 锦屏县|