關於多執行緒run和start的區別
阿新 • • 發佈:2019-01-04
一、先簡單描敘一下建立執行緒的方式通過繼承Thread:
(1)定義一個類繼承Thread類
(2)覆蓋Thread類中的run方法
(3)直接建立Thread的子類物件執行緒
(4)呼叫start方法開啟執行緒並呼叫執行緒的任務run方法執行
public class ThreadDemo extends Thread { private String name; public ThreadDemo(String name){ this.name = name; } public void run(){ for(int i = 0; i < 9; i++){ System.out.println(name+"..........i="+i); } } public static void main(String[] args) { ThreadDemo demo = new ThreadDemo("李四"); ThreadDemo demo1 = new ThreadDemo("張三"); demo.start(); demo1.start(); } }
二、run方法和start方法的區別
1.start()方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體程式碼執行完畢而直接繼續執行下面的程式碼:
通過呼叫Thread類的start()方法來啟動一個執行緒,
這時此執行緒是處於就緒狀態,
並沒有執行。
然後通過此Thread類呼叫方法run()來完成其執行操作的,
這裡方法run()稱為執行緒體,
它包含了要執行的這個執行緒的內容,
Run方法執行結束,
此執行緒終止,
而CPU再執行其它執行緒,
2.run()方法當作普通方法的方式呼叫,程式還是要順序執行,還是要等待run方法體執行完畢後才可繼續執行下面的程式碼:
而如果直接用Run方法,
這只是呼叫一個方法而已,
程式中依然只有主執行緒--這一個執行緒,
其程式執行路徑還是隻有一條,
這樣就沒有達到寫執行緒的目的。
舉例說明一下:
記住:執行緒就是為了更好地利用CPU,
提高程式執行速率的!