线程的生命周期包括5中状态:
1、新生状态:用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。
2、就绪:处于就绪状态的线程已经具备了运行条件,但需要进入线程队列,等待系统为其分配CPU,创建新线程有两种方式,这里是实现Runnable接口,下面有例子。
3、运行:在运行状态的线程执行自己的run方法中的代码,直到调用其他方法而终止、或等待某资源而阻塞或完成任务而死亡。
4、阻塞:处于运行状态的线程在某些情况下,如执行了sleep()方法,将让出CPU并暂时终止自己的运行,进入阻塞状态。在本程序中,在下面的例子中线程需要休眠50ms然后给变量i赋值,所以调用sleep()方法,第三空应该填“sleep”.
5、死亡:线程死亡的原因有两个,一是正常运行的线程完成了全部工作;另一个是线程被强制性地终止。
本程序用到的线程控制方法sleep():该方法使一个线程暂停运行一段固定的时间。在休眠时间内,线程将不运行,休眠时间的长短由sleep()方法的参数决定。sleep()方法结束后,线程将进入可运行状态,进行接下来的给变量i赋值的操作。
具体程序如下:
public class Java_2 {
public static void main (String args[]) {
try {
Sleep a = new Sleep ();
Thread t = new Thread (a);
//*********Found**********
t.start();
t.join();
int j= a.i;
System.out.println("j="+j+",a.i="+a.i);
} catch (Exception e) {} //catch后面不能有空格
}
}
//*********Found**********
class Sleep implements Runnable{
int i;
public void run () {
try {
//*********Found**********
Thread.sleep(50);
i= 10;
}
//*********Found**********
catch(InterruptedException e) {}
}
}