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

詳解Java中Thread 和Runnable區(qū)別

 更新時間:2019年03月23日 11:35:22   作者:Sophie May  
這篇文章主要介紹了Java中Thread 和Runnable的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Thread 和Runnable 關(guān)系

Thread類是接口Runnable的一個實現(xiàn)類。

public class Thread implements Runnable 

源碼分析

Thread Threa類運行的時候調(diào)用start()方法,源代碼如下:

調(diào)用start()方法,實際運行的是start0方法,方法聲明如下:

private native void start0()

native表明這個方法是個原生函數(shù),即這個函數(shù)是用C/C++實現(xiàn)的,被編譯成DLL,由Java調(diào)用。

native 方法是在注冊是在Thread對象初始化完成的,如圖,靜態(tài)塊static里有個registerNatives方法,該方法會注冊一些本地方法供Thread類使用。

start0方法會在JVM 新建一個線程

Runnable Runnable 接口只有一個run()方法,完全是線程運行規(guī)范。

代碼實例分析

Thread類定義一個賣票的類

public class TicketThread extends Thread {

  private int ticket = 100000;

  @Override
  public void run() {
    for (int i = 0; i < 100000; i++) {
      if (ticket > 0) {
        System.out.println("ticket=" + ticket-- + "," + Thread.currentThread().getName());
      }
    }
  }
}

啟動三個線程

new TicketThread().start();
new TicketThread().start();
new TicketThread().start();

運行發(fā)展每個線程獨立執(zhí)行了賣票的任務(wù),每個線程中票數(shù)依次減1。

Runnable接口實現(xiàn)一個賣票的類

public class TicketRunnableThread implements Runnable {
  private int ticket = 1000;
  public void run() {
    for (int i = 0; i < 1000; i++) {
      if (ticket > 0) {
        System.out.println("ticket=" + ticket-- + "," + Thread.currentThread().getName());
      }
    }
  }
}

啟動三個線程

TicketRunnableThread ticketRunnableThread = new TicketRunnableThread();
new Thread(ticketRunnableThread).start();
new Thread(ticketRunnableThread).start();
new Thread(ticketRunnableThread).start();

三個線程共同完成了賣票任務(wù),然而三個線程共同執(zhí)行同一段代碼,會造成線程不安全,可以通過加鎖解決。

使用選擇

實現(xiàn)Runnable接口的同時,還可以繼承其他類,避免Java的單繼承性帶來局限性。
Runnable接口可以實現(xiàn)資源共享,Thread無法完成資源共享。

以上所述是小編給大家介紹的Java中Thread 和Runnable區(qū)別 詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 淺析Java中Runnable和Thread的區(qū)別

    淺析Java中Runnable和Thread的區(qū)別

    在java中可有兩種方式實現(xiàn)多線程,一種是繼承Thread類,一種是實現(xiàn)Runnable接口;Thread類是在java.lang包中定義的。接下來通過本文給大家淺析Java中Runnable和Thread的區(qū)別,一起看看吧
    2017-02-02
  • java 中設(shè)計模式(值對象)的實例詳解

    java 中設(shè)計模式(值對象)的實例詳解

    這篇文章主要介紹了java 中設(shè)計模式(值對象)的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • MyBatis使用<foreach>標(biāo)簽報錯問題及解決

    MyBatis使用<foreach>標(biāo)簽報錯問題及解決

    這篇文章主要介紹了MyBatis使用<foreach>標(biāo)簽報錯問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Springboot死信隊列?DLX?配置和使用思路分析

    Springboot死信隊列?DLX?配置和使用思路分析

    死信隊列簡稱就是DLX,死信交換機和死信隊列和普通的沒有區(qū)別,當(dāng)消息成為死信后,如果該隊列綁定了死信交換機,則消息會被死信交換機重新路由到死信隊列,本文給大家介紹Springboot死信隊列?DLX的相關(guān)知識,感興趣的朋友一起看看吧
    2022-03-03
  • Java class文件格式之?dāng)?shù)據(jù)類型(二)_動力節(jié)點Java學(xué)院整理

    Java class文件格式之?dāng)?shù)據(jù)類型(二)_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java class文件格式之?dāng)?shù)據(jù)類型(二)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 在Mac OS上安裝Tomcat服務(wù)器的教程

    在Mac OS上安裝Tomcat服務(wù)器的教程

    這篇文章主要介紹了在Mac OS上安裝Tomcat服務(wù)器的教程,方便進(jìn)行工作環(huán)境下的Java web開發(fā),需要的朋友可以參考下
    2015-11-11
  • 淺談Java的虛擬機結(jié)構(gòu)以及虛擬機內(nèi)存的優(yōu)化

    淺談Java的虛擬機結(jié)構(gòu)以及虛擬機內(nèi)存的優(yōu)化

    這篇文章主要介紹了Java的虛擬機結(jié)構(gòu)以及虛擬機內(nèi)存的優(yōu)化,講到了JVM的堆和??臻g及GC垃圾回收等重要知識,需要的朋友可以參考下
    2016-03-03
  • ZooKeeper入門教程一簡介與核心概念

    ZooKeeper入門教程一簡介與核心概念

    本文是ZooKeeper入門系列教程,涵蓋ZooKeeper核心內(nèi)容,通過實例和大量圖表,結(jié)合實戰(zhàn),幫助學(xué)習(xí)者理解和運用,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-01-01
  • Java中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢詳解

    Java中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢詳解

    這篇文章主要介紹了Java中Final關(guān)鍵字的使用技巧及其性能優(yōu)勢詳解,Java中的final關(guān)鍵字用于修飾變量、方法和類,可以讓它們在定義后不可更改,從而提高程序的穩(wěn)定性和可靠性,此外,final關(guān)鍵字還有一些使用技巧和性能優(yōu)勢,需要的朋友可以參考下
    2023-10-10
  • SpringBoot統(tǒng)一api返回風(fēng)格的實現(xiàn)

    SpringBoot統(tǒng)一api返回風(fēng)格的實現(xiàn)

    這篇文章主要介紹了SpringBoot統(tǒng)一api返回風(fēng)格的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評論

汉川市| 银川市| 合作市| 安多县| 马鞍山市| 琼中| 大同市| 琼中| 乡城县| 庄浪县| 易门县| 海伦市| 裕民县| 双城市| 阳朔县| 稻城县| 瓮安县| 句容市| 无为县| 长武县| 友谊县| 许昌县| 岑溪市| 石台县| 巴楚县| 临颍县| 花莲市| 勐海县| 太和县| 高陵县| 黔南| 巴南区| 镇远县| 元阳县| 新泰市| 永嘉县| 西华县| 玛沁县| 上蔡县| 扶风县| 巩留县|