java中线程状态-死亡

Posted 关键步就几步

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中线程状态-死亡相关的知识,希望对你有一定的参考价值。

线程死亡:

线程会以如下3种方式结束,结束后就处于死亡状态。

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

2、线程抛出一个未捕获的Exception或Error 

3、直接调用该线程的stop方法结束该线程---该方法容易导致死锁,通常不推荐使用。 

为了测试某个线程是否已经死亡,可以调用线程对象isAlive()方法,当线程处于就绪、运行、阻塞三种状态时,该方法返回true;当线程处于新建、死亡两种状态,该方法将返回false。 

注意:不要试图对一个死亡的线程调用start方法使它重新启动,死亡就是死亡,该线程不可能再次作为线程执行。(如果重新启动的话,运行之后将引发IllegalThreadStateException异常,这表明处于死亡状态的线程无法再次运行了。)

public class StartDead extends Thread {
    private int i;
    public void run(){
        for(;i<30;i++){
            try{sleep(1000);
            System.out.println(getName()+" "+i);}catch(Exception e){
                System.out.println(e);
            }
        }
        
    }
    public static void main(String[] args){
        StartDead s=new StartDead();
        for(int k=0;k<100;k++){
            //Thread.sleep(1000);
            try{System.out.println("当先线程的名字是:"+Thread.currentThread().getName()+" "+k);
            Thread.sleep(1000);}catch(Exception e){
                System.out.println(e);
            }
            if(k==5){
                s.start();
                System.out.println(s.isAlive());
            }
            if(k>5&& !s.isAlive()){
                s.start();
            }
        }
    }
}

 

以上是关于java中线程状态-死亡的主要内容,如果未能解决你的问题,请参考以下文章

怎样检测线程的状态(c代码 )如:线程是死亡、阻塞、挂起等。

Java多线程-线程的状态和线程常用方法

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段

java thread------------线程死亡join

新手学JAVA-多线程----线程的生命周期

13.3 线程的生命周期