一个多线程程序,有线程A,B,C
想监控线程的状态,是否已经死了,如果A已经死了,就把它清除掉。然后重新启动线程A,怎么能检测到A是否挂掉了呢 ?

解决方案 »

  1.   

    楼上正解,线程死掉是指run方法运行结束
      

  2.   

    线程死掉有两种,一种是正常退出,另一种是出现异常。不管是哪一种,在 run() 方法的最后你都应该加上语句告诉管理线程状态的类,这样就能够马上重新启动线程。
      

  3.   

    Java 深度探索者 QQ群: 65670864
      

  4.   


    我的意思是第二个死法, 出现异常或错误的死掉 ,属于不可控的状态 。如果属于不可控的状态,在 run里的方法怎么可以做到?
      

  5.   

    isAlive
    public final boolean isAlive()测试线程是否处于活动状态。如果线程已经启动且尚未终止,则为活动状态。 返回:
    如果该线程处于活动状态,则返回 true;否则返回 false。isAlive不能判断线程是不是死了。
      

  6.   

    我的方法是用个线程监视socketpublic boolean isDead(Socket socket){
    try{
    socket.getInputStream();
    }catch(Exception){
    return true;
    }
    return false;
    }
      

  7.   

    用getState()方法如果返回的是TERMINATED

    线程已经退出了!