У меня есть один основной поток, который запускает еще 10 других потоков. Я хочу, чтобы основной поток был закончен только после прекращения всех остальных потоков. Поэтому я должен вызвать join() для других 10 потоков перед запуском или после их запуска. Например:Как присоединиться к одному потоку с другим в java?
// in the main() method of Main thread
Thread [] threads = new Thread[10];
for(int i = 0; i < 10; i++) {
// ParserThread() is a runnable thread
threads[i] = new Thread(new ParserThread());
threads[i].join();
threads[i].start();
}
System.out.println("All threads have been finished"); // line no. 9
- Так как в приведенном выше примере, я должен позвонить присоединиться() перед запуском() или после запуска().
- Будет ли управление возвращаться к строке №. 9 только после завершения всех потоков.
- Когда был запущен метод запуска любой нити, тогда эта нить погибнет или останется в живых. Если это произойдет, то, как закончить все потоки, когда закончен их метод запуска, означает, что элемент управления возвращается к строке no. 9
Могу ли я вставить инструкцию «threads [i] .join()» в первый цикл цикла после инструкции «threads.start()». –
Вы можете, но тогда ваша вторая нить не начнется, пока не закончится первый. С моим выше кодом все 10 потоков будут работать параллельно, пока они не остановятся. –