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

簡單了解Java多線程實現(xiàn)的四種方式

 更新時間:2020年05月01日 13:47:44   作者:DescribeMe  
這篇文章主要介紹了簡單了解Java多線程實現(xiàn)的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

第一種方式為繼承Thread類然后重寫run方法再調(diào)用start方法,因為java為單繼承多實現(xiàn),所以不建議使用這種方式,代碼如下:

public class Demo extends Thread{

  public static void main(String[] args) {
    new Demo().start();
  }

  @Override
  public void run() {
    System.out.println("繼承Thread類實現(xiàn)多線程");
  }
}

第二種為實現(xiàn)Runnable接口方式,該方式用的較多,代碼如下:

public class Demo2 implements Runnable{

  public static void main(String[] args) {
    new Thread(new Demo2()).start();
  }

  @Override
  public void run() {
    System.out.println("實現(xiàn)Runnable接口的多線程");
  }
}

第三種為實現(xiàn)Callable接口方式,該方式run方法具有返回值,代碼如下:

public class Demo3 implements Callable {

  public static void main(String[] args) throws ExecutionException, InterruptedException {
    FutureTask task=new FutureTask(new Demo3());
    new Thread(task).start();
    System.out.println(task.get());
  }

  @Override
  public String call() throws Exception {
    return "實現(xiàn)Callable接口的多線程";
  }
}

第四種是采用線程池的方式,代碼如下:

public class Demo4 {

  public static void main(String[] args) {
    ExecutorService executorService= Executors.newCachedThreadPool();
    executorService.execute(new Runnable() {
      @Override
      public void run() {
        System.out.println("線程池實現(xiàn)多線程");
      }
    });
    
    executorService.shutdown();
  }
}

從上面我們可以看出線程的調(diào)用都是采用start()方法,那么調(diào)用直接調(diào)用run()方法其實也是可以輸出結(jié)果的,但是有著本質(zhì)的區(qū)別,因為調(diào)用start()方法會使得當前線程的數(shù)量增加,而單純得調(diào)用run()方法是不會的,在start()方法的內(nèi)部其實包含了調(diào)用run()方法。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot的jar包如何啟動的實現(xiàn)

    SpringBoot的jar包如何啟動的實現(xiàn)

    本文主要介紹了SpringBoot的jar包如何啟動的實現(xiàn),文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java并發(fā)LinkedBlockingQueue源碼分析

    Java并發(fā)LinkedBlockingQueue源碼分析

    這篇文章主要為大家介紹了Java并發(fā)LinkedBlockingQueue源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • spring boot org.junit.jupiter.api不存在的解決

    spring boot org.junit.jupiter.api不存在的解決

    這篇文章主要介紹了spring boot org.junit.jupiter.api不存在的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java實現(xiàn)簡單學生管理系統(tǒng)項目

    java實現(xiàn)簡單學生管理系統(tǒng)項目

    這篇文章主要介紹了java實現(xiàn)簡單學生管理系統(tǒng)項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • SpringBoot使用slf4j日志并輸出到文件中的操作方法

    SpringBoot使用slf4j日志并輸出到文件中的操作方法

    這篇文章主要介紹了SpringBoot使用slf4j日志并輸出到文件中,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java文件上傳的多種實現(xiàn)方式

    Java文件上傳的多種實現(xiàn)方式

    文章主要介紹了文件上傳接收接口的使用方法,包括獲取文件信息、創(chuàng)建文件夾、保存文件到本地的兩種方法,以及如何使用Postman進行接口調(diào)用
    2025-01-01
  • Java 內(nèi)省introspector相關(guān)原理代碼解析

    Java 內(nèi)省introspector相關(guān)原理代碼解析

    這篇文章主要介紹了Java 內(nèi)省introspector相關(guān)原理代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • java同步之volatile解析

    java同步之volatile解析

    volatile可以說是Java虛擬機提供的最輕量級的同步機制了,了解volatile的語義對理解多線程的特性具有很重要的意義,下面小編帶大家一起學習一下
    2019-05-05
  • jdk中keytool的使用以及如何提取jks文件中的公鑰和私鑰

    jdk中keytool的使用以及如何提取jks文件中的公鑰和私鑰

    JKS文件由公鑰和密鑰構(gòu)成利用Java?Keytool工具生成的文件,它是由公鑰和密鑰構(gòu)成的,下面這篇文章主要給大家介紹了關(guān)于jdk中keytool的使用以及如何提取jks文件中公鑰和私鑰的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Spring啟動過程源碼分析及簡介

    Spring啟動過程源碼分析及簡介

    本文是通過AnnotationConfigApplicationContext讀取配置類來一步一步去了解Spring的啟動過程。本文重點給大家介紹Spring啟動過程源碼分析及基本概念,感興趣的朋友一起看看吧
    2021-10-10

最新評論

天柱县| 增城市| 竹山县| 泰州市| 尤溪县| 旬阳县| 米林县| 章丘市| 曲松县| 太谷县| 东兰县| 福鼎市| 德州市| 称多县| 海丰县| 桓仁| 尼玛县| 广灵县| 台东市| 澄江县| 定结县| 甘洛县| 高雄市| 万山特区| 沂水县| 米易县| 治县。| 绥中县| 河曲县| 来宾市| 枝江市| 鹰潭市| 蒙阴县| 游戏| 衡阳市| 桑植县| 双峰县| 景德镇市| 肇州县| 刚察县| 郓城县|