Java will use multiple CPUs for multiple threads depending on the platform and the thread library. The JVM may run multiple Java threads on top of a single kernel thread, but all the thread libraries I know about will do multiple kernel threads.
My impression was that recent JVMs on Linux run directly on the pthread library and each thread is a separate kernel thread. The kernel threads on Linux are efficient enough that implementing threads in user space does not help.