停止并在自身内部重新运行一个线程

时间:2012-02-23 18:17:20

标签: java multithreading try-catch runnable

我在类中使用runnable实现了一个线程:

static Runnable myThread = new Runnable() {
 public void run(){
  try{
  //do something forever 
  }catch(Exception e){
    //something happened. Re-run this thread
  }
 } 
}

即使发现异常,我仍希望继续运行此线程。那么,我怎么能在异常条款中做到这一点?对此有更优雅的解决方案吗?

2 个答案:

答案 0 :(得分:6)

使用循环:

static Runnable myThread = new Runnable() {
  public void run() {
    for (;;) {
      try {
        ...
      } catch(Exception e) {
        ...
      }
    }
  } 
}

无论你做什么,我强烈建议你不要默默地忽略这个例外。如果没有更好的方法来处理异常,至少记录它。

答案 1 :(得分:3)

您可以暂时执行此操作并继续循环。类似的东西:

public void run() {
   while (true) 
      try {
          // do something forever 
      } catch(Exception e) {
         // something happened. Re-run this thread
        continue;
      }
      ...
   }
}