When a Java program starts, the JVM creates several threads beyond the main thread, including garbage collector threads and possibly other JVM-internal threads for monitoring, JIT compilation, and other runtime services. The main thread is just one of many threads running from the beginning.