多執行緒問題 為什麼無法呼叫Thread類的start方法

2022-12-25 16:40:56 字數 2867 閱讀 1716

1樓:匿名使用者

我來幫你解決把。。雖然我不明白你為什麼說無法呼叫thread類的start方法。。

首先,你要理解多執行緒實現的2種方法。1.繼承thread類並覆寫run方法 2.

實現runnable介面並覆寫run方法。其中這兩種方法中在實際開發和應用中只有第二種是規範和常見的(原因是thread類也是實現了runnable介面的類,用介面可以實現更大的靈活性和避免單繼承的侷限性以及共享(這個在多執行緒中非常重要!!))

下面來實現thread類的start方法,先編寫一個實現runnable介面的類

public class runnalbedemo implements runnable

}然後再編寫另外一個類來呼叫thread類的start方法

public class thread

這樣就實現了3個執行緒的呼叫start方法。

如果還不明白可以問我,或者在eclipse裡面實驗一下

2樓:匿名使用者

如果start無法使用,應該是你前面的**寫的有問題吧?

給你貼個示例**,先對照一下:

public class treadtest}//第一個執行緒類,記得要實現父程序thread的run方法。run方法中寫出你要這個新執行緒做的事情

//一定注意,在啟動現成的時候要使用start方法,不要直接使用run方法。

class thread1 extends thread}}//這是第二個

class thread2 extends thread}}

3樓:

可以調呀,但,系統就不會給它開一個新的執行緒,,,而是在呼叫 這個方法的執行緒裡進行的,只有呼叫 run方法時,系統才會開一個新的執行緒,單獨用來執行start方法

4樓:匿名使用者

怎麼會不可以。

要麼你也可以對你的**塊

new thread.start();

j**a thread呼叫start後,一直沒有進入run方法,是什麼原因?

5樓:在晴天的雨傘

1.start()方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體**執行完畢而直接繼續執行下面的**:

通過呼叫thread類的start()方法來啟動一個執行緒,這時此執行緒是處於就緒狀態,

並沒有執行。

然後通過此thread類呼叫方法run()來完成其執行操作的,這裡方法run()稱為執行緒體,

它包含了要執行的這個執行緒的內容,

run方法執行結束,

此執行緒終止,

而cpu再執行其它執行緒,

2.run()方法當作普通方法的方式呼叫,程式還是要順序執行,還是要等待run方法體執行完畢後才可繼續執行下面的**:

而如果直接用run方法,

這只是呼叫一個方法而已,

程式中依然只有主執行緒--這一個執行緒,

其程式執行路徑還是隻有一條,

這樣就沒有達到寫執行緒的目的。

舉例說明一下:

記住:執行緒就是為了更好地利用cpu,

提高程式執行速率的!

public class testthread1} }

class runner1 implements runnable } }

c# 多執行緒,threadstart()裡面的方法帶了引數就提示錯誤?

6樓:黃何百

你可以這樣處理啊,在threadstart()裡寫一個不帶引數的方法,再由該方法呼叫另一個帶引數的方法。親測可行

j**a 中,thread的run()和start()方法到底有什麼區別?把我搞糊塗了。

7樓:匿名使用者

1.start()方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體**執行完畢而直接繼續執行下面的**:

通過呼叫thread類的start()方法來啟動一個執行緒,這時此執行緒是處於就緒狀態,

並沒有執行。

然後通過此thread類呼叫方法run()來完成其執行操作的,這裡方法run()稱為執行緒體,

它包含了要執行的這個執行緒的內容,

run方法執行結束,

此執行緒終止,

而cpu再執行其它執行緒,

2.run()方法當作普通方法的方式呼叫,程式還是要順序執行,還是要等待run方法體執行完畢後才可繼續執行下面的**:

而如果直接用run方法,

這只是呼叫一個方法而已,

程式中依然只有主執行緒--這一個執行緒,

其程式執行路徑還是隻有一條,

這樣就沒有達到寫執行緒的目的。

舉例說明一下:

記住:執行緒就是為了更好地利用cpu,

提高程式執行速率的!

public class testthread1} }

class runner1 implements runnable } }

8樓:匿名使用者

你要寫執行緒的話需要繼承thread 類 而run()方法就是 thread的方法 你需要對其重寫,而start()方法呢就是需要你的執行緒例項來呼叫 其作用呢就是啟動當前例項的執行緒也就是說執行run()方法 懂麼~

9樓:

run()是你執行緒執行之後執行的內容,start()是讓你寫的那個執行緒去排隊

10樓:泡麵大

呼叫thread.start()方法時,會呼叫run()方法。

11樓:文庫

run是被其他呼叫的

j**a多執行緒併發去呼叫一個類的靜態方法,有什麼問題?

關於c語言的小問題,為什麼提示無法開啟stdbool h

visual c 貌似永遠不會去支援c99了,至少現在來看是沒這個計劃 參見http en.wikipedia.org wiki c99 所以stdbool.h就不能再vc裡面用。具體關於stdbool.h可參考wdwy003同學的回答。同樣懇請dos250不要再誤人子弟。1l不是胡說八道麼 c99...

刑法問題 為什麼

溯及既往的意思就是,法律能不能用來判出臺以前的事件,原則上不可以,但是有例外,就是如果新法更輕是可以的。我打個比方,假設,2000年,隨地吐痰沒有懲罰措施,然後2005年,隨地吐痰判死刑,那麼,如果允許溯及既往,也就是說,那麼2005年之前,所有隨地吐痰的人,都要判死刑,這是非常不公平的。因為200...

c問題為什麼不對

這是隨機數的重複問題。因為計算機cpu的運算速率比較快。而在for迴圈中迴圈十次,之間取random基本上是一瞬間完成的。random基本不會改變。關於隨機數的重複問題。可以用一些方法降低重複機率的,但你這個隨機的範圍是0 1000,範圍夠大,只需要在加上一句 for int i 0 i 10 i ...