Привет всем, поток демонов перестанет работать, когда поток будет закрыт
закончу? Или поток демонов остановится, когда основной поток
закончить?
Поток демона будет остановлен JVM, когда основной поток выполнения и все пользовательские потоки прервут свое выполнение.
Тогда ваш поток демона строго зависит от выполнения пользовательских потоков и основного потока вашей программы.
Вместо этого JVM выключит вашу программу, пока все пользовательские потоки не будут прерваны.
Напомним, пользовательский поток является потоком, который не позволяет программе завершить работу , потому что, даже если основной поток вашей программы завершается, JVM не останавливает вашу программу, пока все пользователи темы выполнили запрошенную работу. Только после завершения всех пользовательских потоков JVM может завершить работу программы.
Тогда поток демона - это поток, который не удерживает вашу программу от выхода .
Для получения дополнительной информации, проверьте этот старый вопрос SO.
Проверьте API потока . Документация для setDaemon()
методов отчетов ниже:
Помечает этот поток как поток демона или как поток пользователя. Ява
Виртуальная машина завершает работу, когда все запущенные потоки являются демонами
нить.
Или API времени выполнения :
Виртуальная машина Java отключается в ответ на два вида
события:
1) Программа выходит нормально, когда выходит последний поток, не являющийся демоном, или
когда вызывается метод выхода (эквивалентно System.exit) или
2) Виртуальная машина завершает работу в ответ на пользовательское прерывание,
такой как ввод ^ C, или общесистемное событие, такое как выход пользователя из системы или
выключение системы.