In theory, it actually depends on the JVM implementation. Many early JVMs were based on the Green Threads library, which implemented threads within a single OS process. If run on a multiprocessor machine, such a JVM would still run on a single processor; the same would hold for today's multicore single processors.
Today, all major OSs support threading at the OS level, and all major JVMs use the platform threads library more or less directly. So it's up to the OS to schedule threads on multiple cores. For Windows, this wasn't happening until Windows XP SP2, with a few additional patches, so you can't assume it will be true on all machines.