啟動乙個執行緒是用run 還是start

2021-09-27 02:09:02 字數 951 閱讀 8280

啟動執行緒肯定要用start()方法。當用start()開始乙個執行緒後,執行緒就進入就緒狀態,使執行緒所代表的虛擬處理機處於可執行狀態,這意味著它可以由jvm排程並執行。這並不意味著執行緒就會立即執行。當cpu分配給它時間時,才開始執行run()方法(如果有的話)。start()是方法,它呼叫run()方法。而run()方法是你必須重寫的. run()方法中包含的是執行緒的主體。

繼承thread類的啟動方式:

1

public

class

threadstarttest

6 }

實現runnable介面的啟動方式:

1

public

class

runnablestarttest

6 }

實際上這兩種啟動執行緒的方式原理是一樣的。首先都是呼叫本地方法啟動乙個執行緒,其次是在這個執行緒裡執行目標物件的run()方法。那麼這個目標物件是什麼呢?為了弄明白這個問題,我們來看看thread類的run()方法的實現:

1

public

void

run()

5 }

當我們採用實現runnable介面的方式來實現執行緒的情況下,在呼叫new thread(runnable target)構造器時,將實現runnable介面的類的例項設定成了執行緒要執行的主體所屬的目標物件target,當執行緒啟動時,這個例項的 run()方法就被執行了。當我們採用繼承thread的方式實現執行緒時,執行緒的這個run()方法被重寫了,所以當執行緒啟動時,執行的是這個物件自身的 run()方法。總結起來就一句話,如果我們採用的是繼承thread類的方式,那麼這個target就是執行緒物件自身,如果我們採用的是實現runnable介面的方式,那麼這個target就是實現了runnable介面的類的例項。

啟動乙個執行緒是用run 還是start

1.start 方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體 執行完畢而直接繼續執行下面的 通過呼叫thread類的start 方法來啟動乙個執行緒,這時此執行緒是處於就緒狀態,並沒有執行。然後通過此thread類呼叫方法run 來完成其執行操作的,這裡方法run 稱為執行緒體...

用python判斷乙個輸出的數是整數還是浮點數

某些場景,在關於演算法計算時,會涉及到此類場景 比如返回值可能是1.111,或者1.00000.而我們只要整數結果。我們直接上 看如何解決此類問題 a 1.1111 b 1.0000 print isinstance a,int print isinstance b,int 返回結果如下 false...

C 啟動和結束乙個執行緒

在程式執行中會遇到啟動本軟體的exe問,或者啟用其它的exe檔案,已達到執行某些操作的作用。下面是兩種最常見的啟動exe檔案。1 呼叫系統dll使用其提供的方法。引用的dll,csharp view plain copy print dllimport kernel32.dll public sta...