Daemon threads are low-priority background threads that provide services to user threads (like Garbage Collection). The JVM does NOT wait for daemon threads to finish before shutting down; if only daemon threads remain, the JVM exits immediately. Daemon threads are useful for cleanup or background monitoring tasks.
The janitorial staff in an office building. When all employees (user threads) go home, the janitors (daemon threads) stop working too, even if they aren't finished cleaning.
Can you convert a running thread to a daemon thread after it has started?