啟動執行緒肯定要用start()方法。當用start()開始乙個執行緒後,執行緒就進入就緒狀態,使執行緒所代表的虛擬處理機處於可執行狀態,這意味著它可以由jvm排程並執行。這並不意味著執行緒就會立即執行。當cpu分配給它時間時,才開始執行run()方法(如果有的話)。start()是方法,它呼叫run()方法.而run()方法是你必須重寫的. run()方法中包含的是執行緒的主體。
繼承thread類的啟動方式:
當我們採用實現runnable介面的方式來實現執行緒的情況下,在呼叫new thread(runnable target)構造器時,將實現runnable介面的類的例項設定成了執行緒要執行的主體所屬的目標物件target,當執行緒啟動時,這個例項的 run()方法就被執行了。當我們採用繼承thread的方式實現執行緒時,執行緒的這個run()方法被重寫了,所以當執行緒啟動時,執行的是這個物件自身的 run()方法。總結起來就一句話,如果我們採用的是繼承thread類的方式,那麼這個target就是執行緒物件自身,如果我們採用的是實現runnable介面的方式,那麼這個target就是實現了runnable介面的類的例項。
Thread的start 和run 區別
首先,之所以出現執行緒,就是為了更好的利用cpu,讓她更加 精明 的幹活。通過呼叫thread類的start 方法來啟動乙個執行緒,這時此執行緒是處於就緒狀態,並沒有執行。然後通過此thread類呼叫方法run 來完成其執行操作的,這裡方法run 稱為執行緒體,它包含了要執行的這個執行緒的內容,ru...
認識Thread的start和run
認識thread的start和run 1 start 用 start方法來啟動執行緒,真正實現了多執行緒執行,color red 這時無需等待run方法體 執行完畢而直接繼續執行下面的 color 通過呼叫thread類的 start 方法來啟動乙個執行緒,color red 這時此執行緒處於就緒 ...
Thread的start和run的區別
最近看到乙個題目,如下 public static void main string args t.run system.out.println ping static void pong 問,結果會輸出什麼?我執行了很多次,結果都是pong ping。後來終於發現了關鍵點所在,執行緒物件t,呼叫的...