有个类,A类和B类,B类,B类继承了Runnable
现在在A类有new Thread(new B()).start();现在B线程就在运行了。现在我要在B类里面停掉这个线程并销毁,然后在B类里面启运B线程,怎么做这个

解决方案 »

  1.   

    自己销毁自己?见过狠的,没见过这么狠的。不过其实你只需要在B类里面新建一个线程,并启动它就行了;run方法结束结束,这个线程自然就销毁了。唯一的技巧是run()函数中,需要做个判断。private boolean isMySelf = false;public void run() {
      if (isMySelf) {
         doFun(); // 调用你想干的事情的函数;
      } else {
         this.isMySelf = true;
         new Thread(this).start();
      }
    }
      

  2.   

    现在是这样的
    A类
    public class A
    {
        public static void main(String arg)
        {
           try
           {
              new Thread(new B()).start();
           }
           catch(Exception e)
           {
              logger.error(e.toString);
           }
        }
    }B类
    public class B implements Runnable
    {
       void run()
       {
          try
          {
             //做该做的事
          }
          catch(Exception e)
          {
               logger.warn("......");
              //主要就是要这里,这里抛了异常后,不能让程序停掉,面是让线程停掉,然后重新起动线程
          }
       }
    }
      

  3.   

    catch(Exception e) {
      logger.warn("......");
      //主要就是要这里,这里抛了异常后,不能让程序停掉,面是让线程停掉,然后重新起动线程
      new Thread(this).start();
    }
      

  4.   

    请问下,当抛了异常,走到catch里面时,当前线程会停掉?好像是如果只接抛exception才会停吧,因为我是直接打的log,当前线程好像没有被停掉吧
      

  5.   

    catch执行完了,不就是run()函数的末尾了?那不就自然结束了?反正在你的代码里面,我没看出来它能不结束的理由。