java多线程

来源:互联网 发布:php新手用什么框架好 编辑:程序博客网 时间:2024/05/19 16:48

黑马程序员_java多线程---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a><a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

线程死亡

线程会以以下三种方式之一结束,结束后就处于死亡状态:

run()方法执行完成,线程正常结束。

线程抛出一个未捕获的ExceptionError

直接调用该线程的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>、期待与您交流! ----------------------