在线程的生命周期中,他是可以分成好几个状态的:
新建状态(new):用new语句创建的线程对象就是新建状态,此时他和其他的对象是没有差别的,仅仅是被分配了内存。
就绪状态(Runable):当调用他的start()方法的时候,这个线程就进入了就绪状态,处于这个状态的线程就等待着获得他的CPU使用权。
运行状态(Running):处于这个状态的线程占用着CPU,并且执行程序代码。只有处于就绪状态的线程才有机会进入到运行状态。
阻塞状态:当线程处于阻塞状态的时候不会被分配CPU的,只有当线程重新进入就绪状态,它擦有机会转到运行状态。
死亡状态:当线程退出run()方法的时候,就结束了生命周期,即进入了死亡状态。不管线程是正常结束还是异常结束,都不会对其他的线程造成影响。
package thread1;
public class machine extends Thread{
public void run()
{
for(int a=0;a<3;a++)
{
System.out.println(currentThread().getName()+":"+a);
if(a==1&¤tThread().getName().equals("m1"))
throw new RuntimeException("Wrong from machine");
try
{
sleep(100);
}catch(InterruptedException e){throw new RuntimeException(e);}
}
}
public static void main(String[] args) {
machine machine1 = new machine();
machine1.setName("m1");
machine1.start();
machine1.run();
System.out.println("Is machine alive:"+machine1.isAlive());
System.out.println("main:end");
}
}
Thread累的isAlive()方法就是判断一个线程是否存活,如果处于死亡状态的时候,就返回false,否则返回true。
在这个例子中国,machine线程在运行的时候抛出了异常,从而结束了声明周期,但是此时主线程仍然正常运行直至结束。
下一次开始线程调度。这几天太忙了,都周末了。。早晨还要早起爬起来上党课。中午有院赛,下午接着党课。明天上午上党课,下午大学语文。。感觉头都要炸了。。我要回寝室休息去了。。感觉整个人都不好了。