Let's say your
java application employs 3 Threads. None of them is a deamon.
This means, the application will not shut down until all Threads have finished their work.
Now, if Thread A is non-deamon, Thread B and C are deamons, and Thread A finishes work, Thread B and C are just killed and the application shuts down.
This is helpful for background tasks.