當你啟動執行緒,使用start(),系統會把run()方法當成執行緒執行體來處理,這是正常的,也是正確的情況。但是,當你啟動執行緒時,呼叫run()方法,系統run()方法會立即執行,但是這時候系統會把run()方法當成普通的方法,執行緒物件也當成乙個普通物件。
不理解我上面說的話?那我就在解釋一下。
第乙個問題,為什麼要有多執行緒。這個問題的答案可以搜尋到很多。我這邊給出我理解的,不怎麼官方的答案:建立乙個執行緒,就是為了在原有主線程的基礎上,建立乙個新的任務,以達到想要的效果。
既然如此,如果我們呼叫run()方法,系統會把run()方法當成普通的方法,就不能達到建立乙個新的任務的目的。
第二個問題,執行緒如何建立。最常見的有兩種,繼承thread類和實現runnable介面。當然還有像 實現callable介面 的方式建立執行緒。這些方法,都類似的要把run()方法重寫,把run()方法包裝成執行緒執行體。(實現callable介面 的方法,要把call()包裝成執行緒執行體)。可見run()只是執行緒類的乙個方法。
既然如此,如果要啟動乙個執行緒,當然要呼叫strat(),如果呼叫run(),則是呼叫執行緒類的乙個run()方法,這在系統看來,不過是呼叫乙個很普通的類(執行緒類)中的乙個普通的方法(run()方法),會一視同仁的在主線程上面執行。
外裡科技
英雄賺wxid_8awklmbh1fzm22
qq1247408032
開源**
Java多執行緒中run和start的區別
thread的start和run 1 start 用start方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體 執行完畢而直接繼續執行下面的 通過呼叫thread類的start 方法來啟動乙個執行緒,這時此執行緒處於就緒 可執行 狀態,並沒有執行,一旦得到spu時間片,就開始執行r...
Java多執行緒中run和start的區別
原始出處 作者資訊和本宣告。否則將追究法律責任。thread的start和run 1 start 用start方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體 執行完畢而直接繼續執行下面的 通過呼叫thread類的start 方法來啟動乙個執行緒,這時此執行緒處於就緒 可執行 狀態...
多執行緒的start和run
1 start 用start方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體 執行完畢而直接繼續執行下面的 通過呼叫thread類的start 方法來啟動乙個執行緒,這時此執行緒處於就緒 可執行 狀態,並沒有執行,一旦得到spu時間片,就開始執行run 方法,這裡方法run 稱為執...