Just as a quick example, when you start your application, a new user thread is created that execues your main method (this is sometimes called the main thread). As this is a user thread, your application will not terminate until this thread completes. At the same time that the main thread is spawned, a garbage collection thread, which is a daemon thread, will be started. As this is a daemon thread, application termination is not dependent upon the garbage collection thread. Rather, whenever the application terminates, so too does the garbage collection thread.
There is a lot of information on user and daemon threads in the
Java Programmer's Certification Study forum.
I hope that helps,
Corey