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

Java多線程三種主要實(shí)現(xiàn)方式解析

 更新時(shí)間:2020年07月21日 10:24:18   作者:章冒冒2020  
這篇文章主要介紹了Java多線程三種主要實(shí)現(xiàn)方式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

多線程三種主要實(shí)現(xiàn)方式:繼承Thread類,實(shí)現(xiàn)Runnable接口、Callable和Futrue。

一、簡(jiǎn)單實(shí)現(xiàn)

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;

public class T02_HowToCreateThread {
  //1.繼承Thread類
  static class MyThread extends Thread{
    @Override
    public void run() {
      System.out.println("MyThread-->");
    }
  }
  //3.實(shí)現(xiàn)Runnable接口
  static class MyRun implements Runnable{

    @Override
    public void run() {
      System.out.println("MyRunable-->");
    }
  }
  //4.實(shí)現(xiàn)Callable接口
  static class MyCall implements Callable{

    @Override
    public Object call() throws Exception {
      System.out.println("myCallable-->");
      return 1;
    }
  }
  public static void main(String[] args) throws ExecutionException, InterruptedException {
    //1.繼承Thread類
    new MyThread().start();
    //2.lambda與繼承Thread類類//1.繼承Thread類似,最簡(jiǎn)單
    new Thread(()->{
      System.out.println("lambda-->");
    }).start();
    //3.實(shí)現(xiàn)Runnable接口
    new Thread(new MyRun()).start();
    new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println("simple->Runnable");
      }
    }).start();
    //4.實(shí)現(xiàn)Callable接口,并用包裝器FutureTask來(lái)同時(shí)實(shí)現(xiàn)Runable、Callable兩個(gè)接口,可帶返回結(jié)果
    MyCall mycall = new MyCall();
    FutureTask futureTask = new FutureTask(mycall);
    new Thread(futureTask).start();
    System.out.println(futureTask.get());
  }
}

二、使用ExecutorService、Callable和Future一起實(shí)現(xiàn)帶返回值

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;

/**
 * 使用ExecutorsService、Callable、Future來(lái)實(shí)現(xiàn)多個(gè)帶返回值的線程
 */
public class T02_HowToCreateThread02 {
  static class MyCallable implements Callable{
    private int taskNum;

    public MyCallable(int taskNum){
      this.taskNum = taskNum;
    }
    @Override
    public Object call() throws Exception {
      System.out.println("任務(wù)"+taskNum);
      return "MyCallable.call()-->task"+taskNum;
    }
  }
  public static void main(String[] args) throws ExecutionException, InterruptedException {
    int num = 5;
    //創(chuàng)建一個(gè)線程池
    ExecutorService pool = Executors.newFixedThreadPool(num);
    List<Future> futureList = new ArrayList<Future>();
    for (int i = 0; i < num; i++){
      MyCallable mc = new MyCallable(i);
      //執(zhí)行任務(wù),并返回值
      Future future = pool.submit(mc);
      futureList.add(future);
    }
    pool.shutdown();
    for (Future f: futureList){
      System.out.println(f.get());
    }
  }
}

結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中的異常處理之try-catch使用詳解

    Java中的異常處理之try-catch使用詳解

    這篇文章主要介紹了Java中的異常處理之try-catch使用的相關(guān)資料,包括異常的概念、try-catch語(yǔ)句的基本結(jié)構(gòu)、使用示例、多個(gè)catch塊的使用、try-catch-finally的執(zhí)行順序、try-with-resources語(yǔ)句以及總結(jié),需要的朋友可以參考下
    2024-12-12
  • idea顯示properties文件中文亂碼的解決方法

    idea顯示properties文件中文亂碼的解決方法

    在項(xiàng)目中通常會(huì)遇到如下問(wèn)題,突然properties文件中文亂碼,本文主要介紹了idea顯示properties文件中文亂碼的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • JAVA  靜態(tài)的單例的實(shí)例詳解

    JAVA 靜態(tài)的單例的實(shí)例詳解

    這篇文章主要介紹了JAVA 靜態(tài)的單例的實(shí)例詳解的相關(guān)資料,這里提供了實(shí)例方法,來(lái)說(shuō)名不僅實(shí)現(xiàn)了延遲加載,又可以保證線程安全,不影響系統(tǒng)性能,需要的朋友可以參考下
    2017-07-07
  • Java微信公眾平臺(tái)之獲取地理位置

    Java微信公眾平臺(tái)之獲取地理位置

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)之獲取地理位置的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 集合嵌套之ArrayList嵌套ArrayList實(shí)例

    集合嵌套之ArrayList嵌套ArrayList實(shí)例

    下面小編就為大家?guī)?lái)一篇集合嵌套之ArrayList嵌套ArrayList實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Spring Boot配置Thymeleaf(gradle)的簡(jiǎn)單使用

    Spring Boot配置Thymeleaf(gradle)的簡(jiǎn)單使用

    今天小編就為大家分享一篇關(guān)于Spring Boot配置Thymeleaf(gradle)的簡(jiǎn)單使用,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • springboot啟動(dòng)時(shí)如何獲取端口和項(xiàng)目名

    springboot啟動(dòng)時(shí)如何獲取端口和項(xiàng)目名

    這篇文章主要介紹了springboot啟動(dòng)時(shí)如何獲取端口和項(xiàng)目名,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Intellij IDEA中啟動(dòng)多個(gè)微服務(wù)(開(kāi)啟Run Dashboard管理)

    Intellij IDEA中啟動(dòng)多個(gè)微服務(wù)(開(kāi)啟Run Dashboard管理)

    這篇文章主要介紹了Intellij IDEA中啟動(dòng)多個(gè)微服務(wù)(開(kāi)啟Run Dashboard管理),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java數(shù)組的動(dòng)態(tài)初始化和常見(jiàn)問(wèn)題解析

    Java數(shù)組的動(dòng)態(tài)初始化和常見(jiàn)問(wèn)題解析

    本文介紹了數(shù)組動(dòng)態(tài)初始化的概念,即在初始化時(shí)僅指定數(shù)組長(zhǎng)度,系統(tǒng)會(huì)為數(shù)組分配初始值,而靜態(tài)初始化則手動(dòng)指定數(shù)組元素,系統(tǒng)根據(jù)元素個(gè)數(shù)計(jì)算數(shù)組長(zhǎng)度,這兩種初始化方式應(yīng)用場(chǎng)景不同,另外,還講述了數(shù)組默認(rèn)初始化值的規(guī)律及數(shù)組常見(jiàn)問(wèn)題,如越界問(wèn)題等
    2024-10-10
  • Dubbo之降級(jí)Mock源碼分析

    Dubbo之降級(jí)Mock源碼分析

    這篇文章主要為大家介紹了Dubbo降級(jí)Mock源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評(píng)論

读书| 团风县| 老河口市| 三亚市| 永靖县| 太仆寺旗| 抚顺市| 临汾市| 河北省| 杂多县| 尖扎县| 观塘区| 车险| 吉木萨尔县| 博湖县| 河北省| 武隆县| 常宁市| 大宁县| 华坪县| 东方市| 崇礼县| 阳新县| 科尔| 湖北省| 张家口市| 景洪市| 中山市| 五常市| 宁晋县| 五河县| 澳门| 石渠县| 高青县| 治多县| 嘉兴市| 大关县| 塔城市| 通河县| 青阳县| 巫山县|