執行緒中start與run方法的主要區別

2021-10-03 06:50:00 字數 461 閱讀 4262

區別一:

在於當程式呼叫start方法乙個新執行緒將會被建立,並且在run方法中的**將會在新執行緒上執行,

然而在你直接呼叫run方法的時候,程式並不會建立新執行緒,run方法內部的**將在當前執行緒上執行。

大多數情況下呼叫run方法是乙個bug或者變成失誤。

因為呼叫者的初衷是呼叫start方法去開啟乙個新的執行緒,這個錯誤可以被很多靜態**覆蓋工具檢測出來,比如與fingbugs. 如果你想要執行需要消耗大量時間的任務,你最好使用start方法,否則在你呼叫run方法的時候,你的主線程將會被卡住。

區別二:

一但乙個執行緒被啟動,你不能重複呼叫該thread物件的start方法,呼叫已經啟動執行緒的start方法將會報illegalstateexception異常,  而你卻可以重複呼叫run方法

總結:start:啟動執行緒,並呼叫執行緒中的 run 方法

run :執行該執行緒物件要執行的任務

java多執行緒start方法與run方法分析

演示圖 結果1 執行緒裡面的run執行 ping 執行緒裡面的run執行 結果二 執行緒裡面的run執行 執行緒裡面的run執行 ping 去掉start方法 package thread public class mian extends thread 結果唯一 執行緒裡面的run執行 ping ...

Java多執行緒run方法與start方法比較

一 start 方法與run 方法比較 1 start 當前執行緒呼叫start 方法,另乙個執行緒去執行run 方法。start方法不能多次執行。乙個執行緒執行完之後不能重新啟動。2 run 與普通方法一樣,可以重複呼叫。如果直接呼叫run方法,不會新建執行緒去執行run方法,會在當前執行緒中執行...

執行緒 run 和start 方法的區別

閒話少嘮,先舉例子,再做總結。建立乙個執行緒 thread t1 new thread t1.run 只是呼叫了乙個普通方法,並沒有啟動另乙個執行緒,程式還是會按照順序執行相應的 t1.start 則表示,重新開啟乙個執行緒,不必等待其他執行緒執行完,只要得到cup就可以執行該執行緒。舉個兩個例子對...