Не останавливать многопоточность / запускать поток, когда один умирает

#java #multithreading

#java #многопоточность

Вопрос:

Привет, я хотел бы знать, как никогда не останавливать многопоточное Java-приложение. Потоки умирают, если перехватывается исключение в методе run, могу ли я избежать этого? Если нет, могу ли я узнать, когда один из моих потоков умирает, а затем я могу запустить другой?

Это основной

 for (int i=0; i<n; i  ) 
        { 
            MyClass object = new MyClass();
            Thread myThread = new Thread(object); 
            myThread.start();
        } 
  

это MyClass, который реализует runnable

  @Override
public void run() {
    try {
        theLoopMethod();
    } catch (Exception e) {
        System.out.println("error: check errors.txt");
   }
  

Комментарии:

1. Используйте a ThreadPool и an Executor , которые являются объектами параллелизма высокого уровня

Ответ №1:

Чтобы ответить на вопрос 1:

Потоки умирают, если перехватывается исключение в методе run, могу ли я избежать этого?

Вы можете обернуть код в бесконечный цикл while или фактически исправить свой код, чтобы исключение не создавалось.

 while (true) {
    try {
        theLoopMethod();
    } catch (Exception e) {
        System.out.println("error: check errors.txt");
   }
}