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

2022-05-30 08:30:02 字數 2867 閱讀 4021

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多執行緒併發去呼叫一個類的靜態方法,有什麼問題?

為什麼有人說Python的多執行緒是雞肋

差不多是這樣子。多執行緒目前僅用於網路多執行緒採集,以及效能測試。其它的語言也有類似的情況,執行緒本身的特點導致執行緒的適用範圍是受限的。只有cpu過剩,而其它的任務很慢,此時用執行緒才是有益的,可以很好平衡等待時間,提高併發效能。執行緒的問題主要是執行緒的安全穩定性。執行緒無法強制中止,同時執行緒...

刑法問題 為什麼

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

ACCESS函式IF的問題為什麼10以上就不對了

是不是按字元格式比較的 你把y換成91試一下.x和y分別是什麼資料型別?如果是數字,9 10 是true 如果是字元,逐個進行asc碼比較,第一位 9 1 所以 9 10 是 false access 用if函式返回時間 首先保管期限設定成數字整型,永久則不填寫.失效時間 iif isnull 保管...