В JVM, как правило, поток, не являющийся демоном, будет препятствовать завершению JVM. Если больше нет потоков, не являющихся демонами, JVM будет корректно завершать работу, инициируя завершение работы. См. addShutdownHook javadoc для получения дополнительной информации.
После завершения выключения, я не уверен, что статус демона имеет значение. Также нити крюка отключения не запускаются до тех пор, пока не будет инициировано отключение. Так что в этом случае t setDaemon true
может быть ненужным, но это также не повредит.
Короче говоря, семантика "daemon" отличается от unix (где на земле unix он обозначает поток, который продолжает работать).