Daemon threads in Java are low-priority threads that run in the background to perform tasks like garbage collection. The garbage collector thread is indeed a daemon thread because it runs periodically to reclaim memory without requiring explicit program control. The main thread is user-created, not daemon. User-defined threads are daemon only if explicitly marked with setDaemon(true).