2012-02-23 4 views
4

У меня есть поток реализован внутри класса с помощью работоспособной, как это:Stop и повторно запустить поток внутри самой

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

Я хочу продолжать работать в этой теме, когда исключение встречается. Итак, как я могу это сделать в предложении исключения? Есть ли более элегантное решение?

+0

Есть ли петля внутри попытки? Разве это не может быть за пределами попытки? – 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; 
     } 
     ... 
    } 
}