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

java多線程開(kāi)啟的三種方式你知道嗎

 更新時(shí)間:2022年02月07日 11:20:58   作者:xiaostudy  
這篇文章主要為大家詳細(xì)介紹了java多線程開(kāi)啟的三種方式,使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>

1、繼承Thread類,新建一個(gè)當(dāng)前類對(duì)象,并且運(yùn)行其start()方法

 package com.xiaostudy.thread;
  
  /**
   * @desc 第一種開(kāi)啟線程的方式
  * @author xiaostudy
   *
   */
  public class Demo1_Thread extends Thread {
  
     public void run() {
         for (int i = 0; i < 10; i++) {
             System.out.println(i + " run()...");
         }
     }
 
   public static void main(String[] args) {
         Demo1_Thread demo = new Demo1_Thread();
         demo.start();
         for (int i = 0; i < 10; i++) {
             System.out.println(i + " main()...");1         }
     }
 
 }

上面這里就是當(dāng)前類的一個(gè)線程和main線程一起運(yùn)行

2、實(shí)現(xiàn)Runnable接口,然后新建當(dāng)前類對(duì)象,接著新建Thread對(duì)象時(shí)把當(dāng)前類對(duì)象傳進(jìn)去,最后運(yùn)行Thread對(duì)象的start()方法

 package com.xiaostudy.thread;
  
  /**
   * @desc 第二種開(kāi)啟線程的方式
   * @author xiaostudy
   *
   */
  public class Demo2_Thread implements Runnable {
  
     public void run() {
         for (int i = 0; i < 10; i++) {
             System.out.println(i + " run()...");
         }
     }
 
     public static void main(String[] args) {
         Demo2_Thread demo = new Demo2_Thread();
         Thread thread = new Thread(demo);
         thread.start();     
         for (int i = 0; i < 10; i++) {
            System.out.println(i + " main()...");
         }
     }
 
 }

分析:從Thread的有參構(gòu)造方法進(jìn)去

當(dāng)前類傳進(jìn)去,進(jìn)入到Thread的init()方法

再跟進(jìn)去

下面截圖問(wèn)題,分開(kāi)兩個(gè),看行號(hào)。就把當(dāng)前類賦值給了Thread的target屬性

再回過(guò)頭來(lái)看Thread對(duì)象的run()方法,因?yàn)楫?dāng)Thread對(duì)象的start()方法調(diào)用時(shí),是執(zhí)行Thread對(duì)象的run()方法(這里就不深入分析)

這里的target的值就是當(dāng)前類對(duì)象,所以最后還是執(zhí)行了當(dāng)前類對(duì)象的run()方法

3、實(shí)現(xiàn)Callable接口,新建當(dāng)前類對(duì)象,在新建FutureTask類對(duì)象時(shí)傳入當(dāng)前類對(duì)象,接著新建Thread類對(duì)象時(shí)傳入FutureTask類對(duì)象,最后運(yùn)行Thread對(duì)象的start()方法

package com.xiaostudy.thread;

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

/**
 * @desc 第三種開(kāi)啟線程的方式
 * @author xiaostudy
 *
 */
public class Demo3_Thread implements Callable {

    public static void main(String[] args) {
        Callable callable = new Demo3_Thread();
        FutureTask futureTask = new FutureTask(callable);
        Thread thread = new Thread(futureTask);
        thread.start();
        for (int i = 0; i < 10; i++) {
            System.out.println(i + " main()...");
        }
    }

    public Object call() throws Exception {
        for (int i = 0; i < 10; i++) {
            System.out.println(i + " call()...");
        }
        return null;
    }

}

Demo3_Thread.java

分析:同樣從Thread的有參構(gòu)造方法進(jìn)去

同樣也是跟第二種方法一樣

那么,就看Runnable接口和FutureTask類的關(guān)系。從下面的圖看出FutureTask類是Runnable接口的繼承接口的實(shí)現(xiàn)類。

接著看看FutureTask的有參構(gòu)造

從下圖可以看出,F(xiàn)utureTask的有參構(gòu)造,把當(dāng)前類對(duì)象傳給了FutureTask的callable屬性

那么當(dāng)Thread執(zhí)行start()方法時(shí),就是執(zhí)行FutureTask的run()方法,從下面圖看到,最后就是執(zhí)行了當(dāng)前類的call()方法

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!      

相關(guān)文章

  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(29)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(29)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • java事務(wù)的概念淺析

    java事務(wù)的概念淺析

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于java事務(wù)的概念淺析,有興趣的朋友們可以參考學(xué)習(xí)下。
    2020-12-12
  • SpringBoot獲取yml和properties配置文件的內(nèi)容

    SpringBoot獲取yml和properties配置文件的內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了SpringBoot獲取yml和properties配置文件的內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java學(xué)習(xí)常用包(類)之java.util包詳解

    Java學(xué)習(xí)常用包(類)之java.util包詳解

    這篇文章主要介紹了Java學(xué)習(xí)常用包(類)之java.util包的相關(guān)資料,Java.util包是Java標(biāo)準(zhǔn)類庫(kù)的重要組成部分,包含集合框架、日期時(shí)間類、事件模型、隨機(jī)數(shù)生成器等實(shí)用工具類,集合框架提供了多種數(shù)據(jù)結(jié)構(gòu)和算法,需要的朋友可以參考下
    2024-10-10
  • Spring你不知道的一種解耦模式

    Spring你不知道的一種解耦模式

    本文介紹一種方法,服務(wù)定位模式Service?Locator?Pattern來(lái)解決,它幫助我們消除緊耦合實(shí)現(xiàn)及其依賴性,并提出將服務(wù)與其具體類解耦
    2023-01-01
  • Java中使用fileupload組件實(shí)現(xiàn)文件上傳功能的實(shí)例代碼

    Java中使用fileupload組件實(shí)現(xiàn)文件上傳功能的實(shí)例代碼

    這篇文章主要介紹了Java中使用fileupload組件實(shí)現(xiàn)文件上傳功能的實(shí)例代碼,需要的朋友可以參考下
    2017-05-05
  • Spring Aop組成部分及實(shí)現(xiàn)步驟

    Spring Aop組成部分及實(shí)現(xiàn)步驟

    面向切面編程,是對(duì)面向?qū)ο缶幊痰囊环N補(bǔ)充,是一種編程思想,是對(duì)某一類的事情的集中處理,這篇文章主要介紹了Spring Aop組成部分及實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存的示例代碼

    SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存的示例代碼

    這篇文章主要介紹了SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存,Guava Cache是Google Guava庫(kù)中的一個(gè)模塊,提供了基于內(nèi)存的本地緩存實(shí)現(xiàn),文中介紹了SpringBoot整合使用Guava Cache的具體步驟,需要的朋友可以參考下
    2024-03-03
  • Spring?Boot?@Autowired?@Resource屬性賦值時(shí)機(jī)探究

    Spring?Boot?@Autowired?@Resource屬性賦值時(shí)機(jī)探究

    這篇文章主要為大家介紹了Spring?Boot?@Autowired?@Resource屬性賦值時(shí)機(jī),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Java接口回調(diào)的本質(zhì)詳解

    Java接口回調(diào)的本質(zhì)詳解

    大家好,本篇文章主要講的是Java接口回調(diào)的本質(zhì)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02

最新評(píng)論

泗阳县| 樟树市| 南安市| 巴塘县| 西乌珠穆沁旗| 海兴县| 高邮市| 彭州市| 新龙县| 左权县| 临澧县| 青神县| 班玛县| 怀来县| 太仓市| 崇明县| 桐庐县| 贺兰县| 湟源县| 遂昌县| 汾西县| 德格县| 临漳县| 博白县| 泽州县| 通渭县| 南充市| 临武县| 波密县| 若羌县| 济南市| 百色市| 泸西县| 双流县| 瓦房店市| 铁岭市| 晋州市| 股票| 尉犁县| 随州市| 乌鲁木齐县|