亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Thread與Runnable在Java中的區別是什么

發布時間:2021-01-21 16:48:33 來源:億速云 閱讀:139 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關Thread與Runnable在Java中的區別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Thread 和Runnable 關系

Thread類是接口Runnable的一個實現類。

public class Thread implements Runnable

源碼分析

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

Thread與Runnable在Java中的區別是什么

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

private native void start0()

native表明這個方法是個原生函數,即這個函數是用C/C++實現的,被編譯成DLL,由Java調用。

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

Thread與Runnable在Java中的區別是什么

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

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

Thread與Runnable在Java中的區別是什么

代碼實例分析

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();

運行發展每個線程獨立執行了賣票的任務,每個線程中票數依次減1。

Runnable接口實現一個賣票的類

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();

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

使用選擇

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

看完上述內容,你們對Thread與Runnable在Java中的區別是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仁化县| 丰顺县| 宿州市| 墨竹工卡县| 阿拉善右旗| 德安县| 中超| 隆子县| 吴川市| 常山县| 鄯善县| 黔江区| 馆陶县| 防城港市| 桦川县| 平昌县| 新巴尔虎右旗| 清涧县| 通化市| 崇义县| 崇信县| 涟水县| 夹江县| 萨嘎县| 深水埗区| 龙泉市| 常熟市| 金坛市| 宁晋县| 昌图县| 灵石县| 视频| 日喀则市| 保康县| 中方县| 东宁县| 南投市| 资源县| 无极县| 绥江县| 怀远县|