package com.yiing.study.thread;
/**
* 编写线程实例的方法有两个
* 1)继承Thread类,并重写run方法
* 2)继承Runnabel接口,并且实现run()方法
* @author Administrator
*
*/
public class LiftOff {
//计数
public int countDown = 10;
private static int taskCount = 0;
private final int id = taskCount++;
public LiftOff(){}
public LiftOff(int countDown){
this.countDown = countDown;
}
public String status(){
return "#" + id + "(" + (countDown > 0 ? countDown : "LiftOff") + "), ";
}
public void run(){
while(countDown-- > 0){
System.out.println(status());
/**
* Thread.yeild()的调用是对线程调度器(java线程机制的一部分,可以将CPU从一个线程转移给另一个线程)的一种建议,
* 它在声明:“我已经执行完生命周期中最重要的部分了,此刻正是切换给其他任务执行一段时间的大好时机。”
*/
Thread.yield();
}
}
}
/**
*简单测试
*/
package com.yiing.study.thread;
public class MainThread {
public static void main(String[] args){
LiftOff launch = new LiftOff();
/**
* 这里的run()不是由单独的线程驱动的,而是在main()中直接调用的,它和main()实际上是同一个线程
*/
launch.run();
}
}
/**
*测试结果
*/
#0(9),
#0(8),
#0(7),
#0(6),
#0(5),
#0(4),
#0(3),
#0(2),
#0(1),
#0(LiftOff),