Thread的run方法和start方法

2022-02-01 18:28:24 字數 1199 閱讀 7106

thread的run方法和start方法

1執行緒的概念:執行緒的起動並不是簡單的呼叫了run方法,而是由乙個執行緒排程器來分別呼叫所有執行緒的run方法,

我們普通的run方法如果沒有執行完是不會返回的,也就是會一直執行下去,這樣run方法下面的方法就不可能會執行了,可是執行緒裡的run方法卻不一樣,它只有一定的cpu時間,執行過後就給別的執行緒了,這樣反覆的把cpu的時間切來切去,因為切換的速度很快,所以我們就感覺是很多執行緒在同時執行一樣.

簡單的呼叫run方法是沒有這樣效果的,所以必須呼叫thread類的start方法來啟動執行緒.所以啟動執行緒有兩種方法

一是寫乙個類繼承自thread類,然後重寫裡面的run方法,用start方法啟動執行緒

二是寫乙個類實現runnable介面,實現裡面的run方法,用new thread(runnable target).start()方法來啟動

這兩種方法都必須實現run方法,這樣執行緒起動的時候,執行緒管理器好去呼叫run方法.

2「老師給我們講課的時候舉過乙個例子,就相當於玩遊戲機,只有乙個遊戲機(cpu),可是有很多人要玩,於是,start是排隊!等輪到你了,就run()了,當cpu的執行的時間片要到的時候,這個執行緒就繼續排隊,等待下一次的run()」

「準確來說,不應該是排隊,而應該是老師(jvm)看中誰

另外還有乙個狀態,就是

你玩的時候你老媽來叫你吃飯了,於是這個時候你就只好離開,老師繼續找其他人來玩~那麼你這個時候的狀態叫做阻塞狀態。

當你吃飯玩了後又回來繼續玩,這個時候你就又得重新讓老師看中你。。。」

3之所以出現執行緒,就是為了更好的利用cpu,讓她更加「精明」的幹活。

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

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

這裡方法run()稱為執行緒體, 它包含了要執行的這個執行緒的內容,

run方法執行結束, 此執行緒終止, 而cpu再執行其它執行緒,

而如果直接用run方法,

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

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

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

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

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

提高程式執行速率的!

public static void main(string args)

}

Thread類的start 和run 方法

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

thread中start和run方法的區別

認識thread的start和run 1 start 用 start方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體 執行完畢而直接繼續執行下面的 通過呼叫thread類的 start 方法來啟動乙個執行緒,這時此執行緒處於就緒 可執行 狀態,並沒有執行,一旦得到cpu時間片,就開...

Thread中start和run方法的區別

呼叫start 方法會建立乙個新的子執行緒並啟動 呼叫run 方法只是thread的乙個普通方法呼叫 public class threadtest public static void main string args system.out.println 當前主線程是 thread.curren...