黑马程序员_java多线程---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
线程死亡
线程会以以下三种方式之一结束,结束后就处于死亡状态:
run()方法执行完成,线程正常结束。
线程抛出一个未捕获的Exception或Error
直接调用该线程的stop()方法来结束改线程——该方法容易导致死锁。通常不推荐使用为了测试某条线程是否已经死亡,可以调用线程对象的isAlive()方法,当线程处于就绪,运行,阻塞三种状态时,该方法将返回真,当线程处于新建,死亡两种状态时该方法将返回假
不要试图对一个已死亡的线程调用start()方法使他重新启动,死亡就是死亡,改线程将不可再次做为线程执行
public class C extends Thread
{
private int i;
pulbic void run()
{
for(;i<100;i++)
{
System.out.println(getName()+" "+i );
}
}
public static void main(Strint[] args)
{
C c=new C();
for(int i=0;i<300;i++)
{
System.out.println(Theead.currentThread().getName()+" "+i);
if(i=20)
{
c.start();
System.out.println(c.isAlive());
}
if(i>20) && !c.isAlive())
{
c.start();
}
}
}
}
上面程序中粗体字代码试图在线程已死亡的情况下再次调用start()方法来启动该线程,运行上面的程序将引发IllegalThreadStateExceptin异常,这表明死亡状态的线程无法再次运行了。---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------