亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java多線(xiàn)程Future和Callable類(lèi)示例分享

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

一,描寫(xiě)敘述

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

也有人會(huì)說(shuō),我能夠使用同步來(lái)完畢這個(gè)需求啊,普通情況下確實(shí)能夠??墒窃谝环N特殊情況下就不行了:

    ​想象,你開(kāi)啟了多個(gè)線(xiàn)程同步計(jì)算一些數(shù)據(jù),可是大家都知道,線(xiàn)程是會(huì)爭(zhēng)用資源的,也就是說(shuō)。你開(kāi)啟多個(gè)線(xiàn)程來(lái)同步計(jì)算數(shù)據(jù)時(shí)。事實(shí)上線(xiàn)程之間的計(jì)算順序是不可空的,當(dāng)然除非你非非常大周折去處理也不無(wú)可能。在這樣的情況下。Future和Callable的組合就是不二之選了。

二,樣例

這兩個(gè)類(lèi)的樣例事實(shí)上非常easy,主要就看自己在實(shí)際運(yùn)用中能不能找到他們的用武之地了。上代碼:

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)文章

  • Springboot如何根據(jù)實(shí)體類(lèi)生成數(shù)據(jù)庫(kù)表

    Springboot如何根據(jù)實(shí)體類(lèi)生成數(shù)據(jù)庫(kù)表

    這篇文章主要介紹了Springboot如何根據(jù)實(shí)體類(lèi)生成數(shù)據(jù)庫(kù)表的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java中this,static,final,const用法詳解

    Java中this,static,final,const用法詳解

    這篇文章主要介紹了Java中this,static,final,const用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)動(dòng)態(tài)管理示例

    SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)動(dòng)態(tài)管理示例

    這篇文章主要為大家介紹了SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)動(dòng)態(tài)管理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java線(xiàn)程中的ThreadLocal原理及源碼解析

    Java線(xiàn)程中的ThreadLocal原理及源碼解析

    這篇文章主要介紹了Java線(xiàn)程中的ThreadLocal原理及源碼解析,ThreadLocal 的作用是為每個(gè)線(xiàn)程保存一份局部變量的引用,實(shí)現(xiàn)多線(xiàn)程之間的數(shù)據(jù)隔離,從而避免了線(xiàn)程不安全情況的發(fā)生,需要的朋友可以參考下
    2023-12-12
  • Spring中初始化泛型類(lèi)的方法實(shí)例

    Spring中初始化泛型類(lèi)的方法實(shí)例

    這篇文章主要給大家介紹了Spring中如何初始化泛型類(lèi),文中給出詳細(xì)的介紹和方法實(shí)例,對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。
    2017-01-01
  • 通過(guò)Docker啟動(dòng)Solace并在Spring?Boot通過(guò)JMS整合Solace的操作方法

    通過(guò)Docker啟動(dòng)Solace并在Spring?Boot通過(guò)JMS整合Solace的操作方法

    本文將介紹如何在Spring中使用,雖然代碼使用的是Spring Boot,但并沒(méi)有使用相關(guān)starter,跟Spring的整合一樣,可通用,JMS是通過(guò)的消息處理框架,可以深入學(xué)習(xí)一下,不同的MQ在JMS的整合上都是類(lèi)似的,感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • 關(guān)于JWT與cookie和token的區(qū)別說(shuō)明

    關(guān)于JWT與cookie和token的區(qū)別說(shuō)明

    這篇文章主要介紹了JWT與cookie和token的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 教你在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用

    教你在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用

    今天給大家?guī)У奈恼率荍ava8新特性的相關(guān)知識(shí),文章圍繞著如何在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用展開(kāi),文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Java?KeyGenerator.generateKey的19個(gè)方法代碼示例

    Java?KeyGenerator.generateKey的19個(gè)方法代碼示例

    在下文中一共展示了KeyGenerator.generateKey方法的19個(gè)代碼示例,這些例子默認(rèn)根據(jù)受歡迎程度排序
    2021-12-12
  • SpringBoot中使用Redis的完整實(shí)例

    SpringBoot中使用Redis的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于SpringBoot中使用Redis的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論