线程的简单小列子- 龟兔赛跑-继承Thread类

来源:互联网 发布:linux监控服务器性能 编辑:程序博客网 时间:2024/06/05 20:00

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



0 0
原创粉丝点击