Thread中start和run方法的區別

2022-09-13 15:18:11 字數 1360 閱讀 5798

public

class

threadtest

public

static

void

main(string args)

};system.out.println("這裡是main方法 : " +

thread.currentthread().getname());

t.run();

// t.start();}}

呼叫run方法出現的結果

呼叫start方法出現的結果

接下來我們來看下呼叫start這個方法為什麼會不一樣

點選進入start這個方法

進入到具體的目錄:/jdk8u/jdk8u/jdk/file/b860bcc84d51/src/share/native/j**a/lang

這裡看的是jdk8的

進入thread.c這個檔案

來到jvm檔案:/jdk8u/jdk8u/hotspot/file/8c0fa90986a6/src/share/vm/prims/jvm.cpp

搜尋jvm_startthread

然後再去深入看下thread_entry這裡做了什麼

1、呼叫start方法的時候是會去建立乙個新的子執行緒,但是最後還是呼叫了run方法;即呼叫start()--->start0()-->jvm_startthread-->thread_entry-->run()

2、呼叫run方法的時候還在主線程呼叫,即t.run();-->thread這個類中的重寫的run方法

start方法最後還是呼叫了run方法,所以兩者除了執行步驟不一樣,其他都差不多

thread中start和run方法的區別

認識thread的start和run 1 start 用 start方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體 執行完畢而直接繼續執行下面的 通過呼叫thread類的 start 方法來啟動乙個執行緒,這時此執行緒處於就緒 可執行 狀態,並沒有執行,一旦得到cpu時間片,就開...

Thread中start和run方法的區別

呼叫start 方法會建立乙個新的子執行緒並啟動 呼叫run 方法只是thread的乙個普通方法呼叫 public class threadtest public static void main string args system.out.println 當前主線程是 thread.curren...

Thread中run和start方法的模板設計模式

建立乙個thread需要繼承thread重寫run方法或者實現runnable介面中的run方法,其實兩者都是一樣因為thread也繼承了runnable介面。實現了run方法,但是啟動確實用start方法,那麼這是為什麼?thread使用模板設計模式,執行緒控制的邏輯交給thread自己,而實現的...