现在有这样一个需求,线程A间隔5秒执行一次,可是不知道什么情况线程A无缘无故就死了,假如这样现象已经发生了,现在就是要弄一种方案,如果线程A无缘无故死了,可以重新启动线程A。我的思路是在搞一个线程B,来定时执行监测线程A的状态,看A是否还在运行,如果没有运行,在B中启动线程A。可是如果在线程B中拿到线程A的状态。这个我不知道啦!网上还有一种方案是搞线程池。不是太懂,希望大虾们给点意见。

解决方案 »

  1.   

    Thread的getState()方法可以返回线程的状态
    LZ可以自己查看javadoc
    Thread.State.NEW 至今尚未启动的线程处于这种状态。 
    Thread.State.RUNNABLE 正在 Java 虚拟机中执行的线程处于这种状态。 
    Thread.State.BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态。 
    Thread.State.WAITING 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。 
    Thread.State.TIMED_WAITING 等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。 
    Thread.State.TERMINATED 已退出的线程处于这种状态。