简单 小列子 以便理解 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方法 主线程 执行我们的程序,所以就一条线 从上往下执行完毕.