欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java創(chuàng)建子線程的兩種方法

 更新時間:2020年05月21日 15:07:00   作者:南擘汪  
這篇文章主要介紹了Java創(chuàng)建子線程的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

摘要:

其實兩種方法歸結(jié)起來看還是一種,都是利用Thread的構(gòu)造器進行創(chuàng)建,區(qū)別就是一種是無參的,一種是有參的。

一、繼承Thread線程類:

通過繼承Thread類,重寫run方法,子類對象就可以調(diào)用start方法啟動線程,JVM就會調(diào)用此線程的run方法。
代碼如下:

public class MyThread extends Thread {
  public MyThread() { 
    super(); 
  }
    @Override
    public void run() { 
  }
    // 線程執(zhí)行結(jié)束
    System.out.println("執(zhí)行完成! " + getName());
  }
}

public class HelloWorld {
public static void main(String[] args) {
  // 創(chuàng)建線程t1
  Thread t1 = new MyThread(); ①
  // 開始線程t1
  t1.start();
}
}

注意: 如果直接調(diào)用run方法,程序只會按照順序執(zhí)行主線程這一個線程。不會創(chuàng)建一個線程。

public class HelloWorld {
public static void main(String[] args) {
  // 創(chuàng)建線程t1
  Thread t1 = new MyThread(); ①
  // 開始線程t1
  t1.run();
}
}

二、實現(xiàn)Runnable接口:

因為Thread類實現(xiàn)了Runnable接口,我們可以直接實現(xiàn)Runnable,然后通過Thread(Runnable target)來創(chuàng)建線程。

//線程執(zhí)行對象
public class Runner implements Runnable { 
    // 編寫執(zhí)行線程代碼
    @Override
    public void run() { 
    }
    // 線程執(zhí)行結(jié)束
    System.out.println("執(zhí)行完成! " + Thread.currentThread().getName());
  }
}

public class HelloWorld {
  public static void main(String[] args) {
    // 創(chuàng)建線程t1,參數(shù)是一個線程執(zhí)行對象Runner
    Thread t1 = new Thread(new Runner()); 
    // 開始線程t1
    t1.start(); 
  }
}

注意: (1)實現(xiàn)Runnable接口,就不能調(diào)用Thread類的方法了,但是可以通過Thread.currentThread()進行調(diào)用。
(2)可能有的人很好奇,thread.start();為什么調(diào)用我們實現(xiàn)Runnable類的run方法,而不是Thread類的run方法。這就要從源碼分析了:

//Thread的run方法,調(diào)用target.run()
public void run() {
    if (target != null) {
      target.run();
    }
 }
 //Thread的構(gòu)造器
public Thread(Runnable target) {
    init(null, target, "Thread-" + nextThreadNum(), 0);
}

Thread類的構(gòu)造器會調(diào)用init方法,會把我們傳過去的Runnable對象賦值給Thread類的target,所以target.run()就是我們實現(xiàn)Runnable類,調(diào)用重寫的run方法。

private Runnable target;

二、比較創(chuàng)建線程的兩種方法:

開發(fā)中:優(yōu)先選擇,實現(xiàn)Runnable接口的方式

原因:(1)實現(xiàn)的方式?jīng)]有類的單繼承的局限性

(2)實現(xiàn)的方式更適合來處理多個線程共享數(shù)據(jù)的情況。

聯(lián)系: Thread實現(xiàn)了Runnable

相同點: 兩者都需要重寫run()。

總結(jié):兩種方法各有好壞,所謂蘿卜青菜各有所愛,除了自身喜好,別忘了實際的應用場景。(◔◡◔)

到此這篇關(guān)于Java創(chuàng)建子線程的兩種方法的文章就介紹到這了,更多相關(guān)Java創(chuàng)建子線程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot面試題總結(jié)

    Spring Boot面試題總結(jié)

    這篇文章主要介紹了Spring Boot面試題總結(jié),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • SpringMVC通過攔截器實現(xiàn)IP黑名單

    SpringMVC通過攔截器實現(xiàn)IP黑名單

    這篇文章主要為大家詳細介紹了SpringMVC通過攔截器實現(xiàn)IP黑名單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • java自動生成ID號的方法

    java自動生成ID號的方法

    這篇文章主要介紹了java自動生成ID號的方法,涉及java生成ID號的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Java使用JavaMail API發(fā)送和接收郵件的代碼示例

    Java使用JavaMail API發(fā)送和接收郵件的代碼示例

    JavaMail是Oracle甲骨文開發(fā)的Java郵件類API,支持多種郵件協(xié)議,這里我們就來看一下Java使用JavaMail API發(fā)送和接收郵件的代碼示例
    2016-06-06
  • 基于spring如何實現(xiàn)事件驅(qū)動實例代碼

    基于spring如何實現(xiàn)事件驅(qū)動實例代碼

    這篇文章主要給大家介紹了關(guān)于基于spring如何實現(xiàn)事件驅(qū)動的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • Java結(jié)構(gòu)型設計模式之裝飾模式詳解

    Java結(jié)構(gòu)型設計模式之裝飾模式詳解

    裝飾模式(Decorator Pattern)允許向一個現(xiàn)有的對象添加新的功能,同時又不改變其結(jié)構(gòu)。這種類型的設計模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有類的一個包裝。這種模式創(chuàng)建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能
    2023-03-03
  • idea 默認路徑修改從C盤更改到D盤

    idea 默認路徑修改從C盤更改到D盤

    本文主要介紹了idea 默認路徑修改從C盤更改到D盤,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • 基于Spring Boot使用JpaRepository刪除數(shù)據(jù)時的注意事項

    基于Spring Boot使用JpaRepository刪除數(shù)據(jù)時的注意事項

    這篇文章主要介紹了Spring Boot使用JpaRepository刪除數(shù)據(jù)時的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java使用釘釘創(chuàng)建企業(yè)內(nèi)部機器人的實現(xiàn)

    Java使用釘釘創(chuàng)建企業(yè)內(nèi)部機器人的實現(xiàn)

    釘釘?shù)某霈F(xiàn)為企業(yè)節(jié)約了大量人力成本,其中也開放了大量的外部api接口方便企業(yè)使用。本文主要介紹了Java使用釘釘創(chuàng)建企業(yè)內(nèi)部機器人的實現(xiàn),感興趣的可以了解一下
    2021-11-11
  • 基于EasyExcel實現(xiàn)百萬級數(shù)據(jù)導入導出詳解

    基于EasyExcel實現(xiàn)百萬級數(shù)據(jù)導入導出詳解

    大數(shù)據(jù)的導入和導出,相信大家在日常的開發(fā)、面試中都會遇到。本文將為大家詳細介紹一下如何利用EasyExcel實現(xiàn)百萬級數(shù)據(jù)導入導出,需要的可以參考一下
    2023-01-01

最新評論