Вся цель потока демона состоит в том, чтобы он не поддерживал работу JVM, если он является единственным запущенным потоком; это по замыслу . Есть много причин, по которым вы можете сделать это.
Например, в приложении Swing пользователь мог вызвать долгосрочную задачу в фоновом потоке демона (в отличие от потока диспетчера событий). До завершения задачи пользователь пытается выйти из приложения. На этом этапе разработчик приложения, возможно, решил, что лучше немедленно закрыть приложение, чем откладывать попытку завершения до завершения длительных вычислений, поэтому они решили присвоить статус демона потока вычислений.