最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年01月13日 10:19:21   投稿:hebedich  
JAVA多線程實現(xiàn)方式主要有三種:繼承Thread類、實現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實現(xiàn)有返回結(jié)果的多線程。其中前兩種方式線程執(zhí)行完后都沒有返回值,只有最后一種是帶返回值的。今天我們就來研究下Future和Callable的實現(xiàn)方法

一,描寫敘述

    ​在多線程下編程的時候。大家可能會遇到一種需求,就是我想在我開啟的線程都結(jié)束時,同一時候獲取每一個線程中返回的數(shù)據(jù)然后再做統(tǒng)一處理,在這種需求下,F(xiàn)uture與Callable的組合就派上了非常大的用場。

也有人會說,我能夠使用同步來完畢這個需求啊,普通情況下確實能夠??墒窃谝环N特殊情況下就不行了:

    ​想象,你開啟了多個線程同步計算一些數(shù)據(jù),可是大家都知道,線程是會爭用資源的,也就是說。你開啟多個線程來同步計算數(shù)據(jù)時。事實上線程之間的計算順序是不可空的,當(dāng)然除非你非非常大周折去處理也不無可能。在這樣的情況下。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();
  }
 
}

相關(guān)文章

最新評論

平遥县| 长顺县| 青河县| 沽源县| 黄大仙区| 庄浪县| 万宁市| 贵德县| 井冈山市| 阜康市| 马关县| 永登县| 临洮县| 桐柏县| 隆子县| 开阳县| 册亨县| 黄大仙区| 五大连池市| 资阳市| 咸阳市| 内江市| 垦利县| 沈阳市| 普陀区| 韩城市| 永修县| 定结县| 鸡西市| 册亨县| 南投县| 微博| 尼勒克县| 皮山县| 开远市| 承德县| 宜阳县| 金秀| 清河县| 合山市| 正镶白旗|