簡單 小列子 以便理解 start 和 run 方法的區別
第一步定義一個 兔子 類 實現run方法:
package com.java.thread.test;
//實現線程 繼承 thread接口 或者 實現 runnable接口
public class rabbit extends Thread {
@Override
public void run() {
//線程體
for(int i=1;i<11;i++){
System.out.println("兔子跑了"+i+"步");
}
}
}
第二步 同樣定義一個 烏龜 類 實現run方法:
package com.java.thread.test;
public class tortoies extends Thread {
@Override
public void run() {
//線程體
for(int i=1;i<11;i++){
System.out.println("烏龜跑了"+i+"步");
}
}
}
第三步:main方法 :
/**
* 調用線程
* @author Administrator
*如何調用線程: 1 實例對象 2 對象.start方法
*/
public class rabbitApp {
public static void main(String[] args) {
//第一步實例對象
rabbit rb = new rabbit();
tortoies tor = new tortoies();
//第二步 對象.start方法
rb.start(); //線程啓動方法 不代表線程就運行,此方法 將線程假如線程組,等待我們cpu的調用.
tor.start();
}
}
運行結果:
兔子跑了1步
兔子跑了2步
烏龜跑了1步
兔子跑了3步
烏龜跑了2步
兔子跑了4步
烏龜跑了3步
兔子跑了5步
烏龜跑了4步
兔子跑了6步
烏龜跑了5步
兔子跑了7步
烏龜跑了6步
兔子跑了8步
兔子跑了9步
兔子跑了10步
烏龜跑了7步
烏龜跑了8步
烏龜跑了9步
烏龜跑了10步
如果在main方法裏面 不調用 start 方法 而是run方法,
public static void main(String[] args) {
//第一步實例對象
rabbit rb = new rabbit();
tortoies tor = new tortoies();
rb.run();//這個調用 只是對象內部方法 並不是啓動線程
tor.run();
}
結果:
兔子跑了1步
兔子跑了2步
兔子跑了3步
兔子跑了4步
兔子跑了5步
兔子跑了6步
兔子跑了7步
兔子跑了8步
兔子跑了9步
兔子跑了10步
烏龜跑了1步
烏龜跑了2步
烏龜跑了3步
烏龜跑了4步
烏龜跑了5步
烏龜跑了6步
烏龜跑了7步
烏龜跑了8步
烏龜跑了9步
烏龜跑了10步
因爲run方法只是 對象的一個普通方法,並不會啓用線程, 只有一個main方法 主線程 執行我們的程序,所以就一條線 從上往下執行完畢.