執行緒的建立執行 start和run的原始碼分析

2021-08-27 23:51:05 字數 1289 閱讀 6807

建立執行緒的兩種方式,繼承thread類和實現runnable介面.

1.繼承thread類

public class ethread extends thread 

}

public class tthread1
extends thread

process finished with exit code 0

繼承thread類,然後建立該繼承類,然後使用strat()方法.

如果使用run()方法,表示直接呼叫該物件的run()方法.

thread類實現了runnable介面,實現了run()方法.

所以如果要啟動執行緒,需要使用strat()方法.

呼叫start()方法後會將當前執行緒類加入到執行緒組中.然後呼叫本地的start0()方法,執行執行緒

public synchronized void start()  finally 

} catch (throwable ignore) }}

private native void start0();

2.實現runnable介面

建立執行緒物件(引數為該實現類)

thread.strat();

public class rthread implements runnable

}

public class tthread2 

}

implements runnable

process finished with exit code 0

以該實現類為引數建立執行緒物件

public thread(runnable target)
private void init(threadgroup g, runnable target, string name,

long stacksize)

3.直接呼叫thread.run().

如果是繼承thread類,會重寫run()方法,執行時,執行我們繼承類重寫的run()方法.

如果是實現runnable介面,建立thread時,會把實現類賦值給target,會呼叫我們實現時寫的run()方法.

@override

public void run()

}

執行緒的run 和start )

1.run 執行狀態方法 run 方法 在本執行緒內呼叫該runnable物件的run 方法,可以重複多次呼叫 2.start 啟動乙個執行緒 就緒 start 方法 啟動乙個執行緒,呼叫該runnable物件的run 方法,不能多次啟動乙個執行緒 public class runtest catc...

執行緒的建立方式及start和run的區別

public class test class mythread extends thread class mythread2 implements runnable 一共有兩種方式建立多執行緒。下面再給乙個例子 public class test 執行start方法,實現真正的多執行緒的效果 t....

多執行緒的start和run

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