Weird -- someone else just asked "what are daemon threads" this morning. The definition of a daemon thread is just this: if all the threads running in a JVM are daemon threads, the JVM will exit. That's it. So if you want to create a "background" thread to do some repetitive task, but you want your program to exit as soon as main() returns, then make that background thread be a daemon thread. As far as your second question: is it "What happens when you run multiple JVMs?" or "What happens when you run multiple threads in one JVM?" In either case, nothing remarkable; if you understand what a JVM is and what a Thread is, you should already know the answers.