1. 程式人生 > >關於多執行緒run和start的區別

關於多執行緒run和start的區別

一、先簡單描敘一下建立執行緒的方式通過繼承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, 
提高程式執行速率的!