будет ли основной поток выхода до завершения дочерних потоков?будет ли основной поток выхода до завершения дочерних потоков?
я прочитал в 2 статьях
http://www.cs.mtu.edu/~shene/NSF-3/e-Book/FUNDAMENTALS/thread-management.html
в вышеуказанной статье, в «Thread Расторжение» пункт, говорится в красном ", если родительский поток завершается, все его дочерних потоков прекращается, а также. "
http://www.roseindia.net/java/thread/overview-of-thread.shtml
в вышеуказанной статье, последняя строка в этой странице состояний «Основной() исполнение метод может закончить, но программа будет продолжать работать до тех пор, все нити не должны завершить выполнение.».
i fee они противоречивые. если я ошибаюсь, эксперты меня исправят.
В моей программе программа с методом Main вызывает конструктор из 2 потоков. в конструкторе соответствующих потоков у меня есть метод start().
TestA A = new TestA("TestA");
TestB B = new TestB("TestB");
public TestA(String name) {
System.out.println(name);
t = new Thread(this);
t.start();
}
Я хотел бы знать, что происходит, основной поток завершается до завершения дочерних потоков? если да, то будет ли дочерние потоки в любом случае продолжать продолжение выполнения?
Я попытался запустить программу, несколько раз все дочерние потоки выполняются полностью, даже если главный поток завершается. В двух потоках я обрабатываю некоторые файлы. в тесте testA Один, только один файл не обрабатывается несколько раз. но много раз все файлы обрабатываются, и у меня нет никаких проблем.
Спасибо за подробное объяснение. вы упомянули, что «в вашем случае потоки являются пользовательскими потоками и, следовательно, разрешены для завершения до выхода основного потока». Здесь вы имеете в виду «основной поток», чтобы быть временем выполнения Java, а не программой с основным методом(). верный? – user1257836
класс, который имеет основной метод и потоки, которые создаются внутри основного метода, - это все пользовательские потоки. все эти потоки независимы, и выполняются одновременно. Потому что я дал System.out.println («выход из основного метода»); в конце основного метода. это печатается до system.out.println() в дочерних потоках. это заставило меня думать, что основной поток (класс, который имеет основной метод) может выйти даже до дочерних потоков. это прекрасный и правильный способ поведения? – user1257836
не могли бы вы пояснить, что вы подразумеваете под файловыми замками? заранее спасибо!! – user1257836