Ответ 1
Если ваше приложение запускает пользовательский поток (т.е. не-демонный поток), JVM будет ждать, пока не вернется его метод run()
(или поток завершит его выполнение) до того, как он завершит приложение. Однако, если ваш поток задан как daemon, он инструктирует JVM не дожидаться завершения его выполнения, если JVM должен закрыть приложение (т.е. Когда ни один другой поток пользователей не запущен). Помимо этого, оба типа потоков обрабатываются одинаково во всех других аспектах.
В вашем случае вы не должны устанавливать свой Timer
как поток демона до тех пор, пока вы не захотите, чтобы его выполнение приостановило выполнение приложения.
Для получения дополнительной информации прочитайте this и this.