Крис уже объяснил, что такое потоки демонов, так что давайте поговорим о практическом использовании. Многие реализации пула потоков используют потоки демона для рабочих задач. Рабочие - это потоки, которые выполняют задачи из очереди задач.
Работнику нужно бесконечно ждать выполнения задач в очереди, так как они не знают, когда появится новая задача. Поток, который назначает задачи (скажем, основной поток), знает только, когда задачи завершены. Основной поток ожидает очереди задач, чтобы освободиться, а затем завершается. Если рабочие являются пользовательскими потоками, то есть не демонами, программа не будет завершена. Эти бесконечно работающие рабочие будут продолжать ждать, даже если рабочие не делают ничего полезного. Отметьте рабочие потоки демонов, и основной поток позаботится об их уничтожении, как только завершит обработку задач.