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

2022-05-19 17:07:36 字數 1030 閱讀 2964

建立乙個thread需要繼承thread重寫run方法或者實現runnable介面中的run方法,其實兩者都是一樣因為thread也繼承了runnable介面。

實現了run方法,但是啟動確實用start方法,那麼這是為什麼?

thread使用模板設計模式,執行緒控制的邏輯交給thread自己,而實現的業務邏輯則交給run方法。

先看一下start方法的一段原始碼:

1

if (threadstatus != 0)2

throw

newillegalthreadstateexception();

34 group.add(this);5

6 boolean started = false;7

try finally

15 } catch

(throwable ignore)

19 }

其中run方法是由第8行start0()來啟動的。

總的來說就是:run方法來實現自己的業務邏輯,而執行緒的其他控制邏輯交給thread,也就是start方法中除了啟動run的start0其他邏輯**則是執行緒控制的邏輯**。

來看乙個模板方法的例子:

public

class

templatemethoddesign

protected

void

customizedmsg(string msg)

public

static

void

main(string args)

};design.printmsg("here is your logic");

}}

customizedmsg重寫自己的邏輯,printmsg方法定義控制的邏輯**而且是final修飾的,不允許重寫。好處就是,結構**交給父類,子類只需要實現自己的業務邏輯即可。

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中start和run方法的區別

public class threadtest public static void main string args system.out.println 這裡是main方法 thread.currentthread getname t.run t.start 呼叫run方法出現的結果 呼叫sta...