Java併發編程學習隨筆 (一) 使用run() 和 start()的差別

java多線程run()和start()的區別

當你啓動線程,使用start(),系統會把run()方法當成線程執行體來處理,這是正常的,也是正確的情況。但是,當你啓動線程時,調用run()方法,系統run()方法會立即執行,但是這時候系統會把run()方法當成普通的方法,線程對象也當成一個普通對象。

就是說 start 纔是真正的啓動了一個線程,run 只是座位當前線程的一個方法在執行

此時運行情況爲 A /B/C 三個線程輪流執行:

public class ThreadTest extends Thread {

	private int a =1;
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		while(true) {
			System.out.println("由"+this.currentThread().getName());
		}
	}
	
	public ThreadTest(String name) {
		super();
		this.setName(name);
	}

}

  

public class RunTest {

	public static void main(String[] args) {

		ThreadTest threadTest1 = new ThreadTest("A");
		ThreadTest threadTest2 = new ThreadTest("B");
		ThreadTest threadTest3 = new ThreadTest("C");
		
		threadTest1.start();
		threadTest2.start();
		threadTest3.start();
	}

}

 

 

 

使用run()的情況

 

public class RunTest {

	public static void main(String[] args) {

		ThreadTest threadTest1 = new ThreadTest("A");
		ThreadTest threadTest2 = new ThreadTest("B");
		ThreadTest threadTest3 = new ThreadTest("C");
		
		threadTest1.run();
		threadTest2.run();
		threadTest3.run();
	}

}

 

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章