2012-02-23 8 views
4

は、私はこのような実行可能なを使用して、クラス内で実装されたスレッドがあります停止し、再実行スレッド自体の内部

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

私は例外が発見された場合でも、このスレッドを実行しておきたいです。では、例外句の中でどうすればいいですか?これにはより洗練されたソリューションがありますか?

+0

試しにループがありますか?それはtry-catchの外にありませんか? – Jivings

答えて

6

ループを使用してください:

何をするにしても
static Runnable myThread = new Runnable() { 
    public void run() { 
    for (;;) { 
     try { 
     ... 
     } catch(Exception e) { 
     ... 
     } 
    } 
    } 
} 

が、私は強く静かに例外を無視しないことをお勧めしたいです。例外を処理する方法がない場合は、少なくともログに記録してください。

3

しばらくしてからループを続けることができます。何かのように:

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