interrupt()一定要等到该线程检查interrupt状态的是后才能抛出错误结束线程,我现在碰到的问题是,一个线程会一直运行,而且不会有wait()sleep()之类的方法,用interrupt()无法结束线程,有没有什么方法可以从外部强制结束该线程?

解决方案 »

  1.   

    不是有个极度不赞成使用的stop方法嘛...
      

  2.   

    if(!isInterrupted() ){
    // 程序放这里就不会被执行了
    }
      

  3.   

    stop()方法
    使用布尔变量判断
      

  4.   

    public class Constant
    {
       public static boolean flag = true;   public static void setFlag(String flag)
       {
          this.flag = flag;
       }
      .........
    }
    pulic class XXX
    {
       ......     public void run()
      {
          while(Constant.flag)
          {
            ......
           }
       }
    }public class User
    {
      .......
      void method()
      {
         Constant.setFlag(false);
         .........
       }
    }
      
      

  5.   

    谢谢各位回复,stop就不考虑了,加判断位也不太可能,这个线程不是一个死循环线程,正常情况下,运行完成就自动结束了,之所以需要从外部强制结束,是因为执行时间可能很长,如果超过一定时间就不需要他继续执行了,需求就是这样的joejoe1991的回复很正确但是怎么抛出来呢?这个线程在大多数时候都可以及时完成,只是很少数情况会超时,强制结束就是为了不占用资源,由于某些原因不考虑用线程池,各位高手还有什么方法吗?