start和run的區別

2021-10-23 17:53:00 字數 621 閱讀 5768

1,run方法是runnable介面中定義的,start方法是thread類定義的。 所有實現runnable的介面的類都需要重寫run方法,run方法是執行緒預設要執行的方法,是繫結作業系統的,也是執行緒執行的入口。 start方法是thread類的預設執行入口,thread又是實現runnable介面的。要使執行緒thread啟動起來,需要通過start方法,表示執行緒可執行狀態,呼叫start方法後,則表示thread開始執行,此時run變成了thread的預設要執行普通方法。

2),通過start()方法,直接呼叫run()方法可以達到多執行緒的目的 通常,系統通過呼叫執行緒類的start()方法來啟動乙個執行緒,此時該執行緒處於就緒佇列,而非執行狀態,這也就意味著這個執行緒可以被jvm來排程執行。在排程過程中,jvm會通過呼叫執行緒類的run()方法來完成試機的操作,當run()方法結束之後,此執行緒就會終止。 如果直接呼叫執行緒類的run()方法,它就會被當做乙個普通的函式呼叫,程式中任然只有主線程這乙個執行緒。也就是說,star()方法可以非同步地呼叫run()方法,但是直接呼叫run()方法確實同步的,因此也就不能達到多執行緒的目的。

注:run()和start()的區別可以用一句話概括:單獨呼叫run()方法,是同步執行;通過start()呼叫run(),是非同步執行。

Thread的start 和run 區別

首先,之所以出現執行緒,就是為了更好的利用cpu,讓她更加 精明 的幹活。通過呼叫thread類的start 方法來啟動乙個執行緒,這時此執行緒是處於就緒狀態,並沒有執行。然後通過此thread類呼叫方法run 來完成其執行操作的,這裡方法run 稱為執行緒體,它包含了要執行的這個執行緒的內容,ru...

Thread的start和run的區別

最近看到乙個題目,如下 public static void main string args t.run system.out.println ping static void pong 問,結果會輸出什麼?我執行了很多次,結果都是pong ping。後來終於發現了關鍵點所在,執行緒物件t,呼叫的...

JAVA 執行緒run和start的區別

thread類中run 和start 方法的區別如下 run 方法 在本執行緒內呼叫該runnable物件的run 方法,可以重複多次呼叫 start 方法 啟動乙個執行緒,呼叫該runnable物件的run 方法,不能多次啟動乙個執行緒 package com.ljq.test public cl...