Cómo el programa multiproceso de Java puede usar múltiples núcleos de CPU?

¿Podría alguien explicar cómo el programa multiproceso Java (por ejemplo, el contenedor de servlets Tomcat) puede usar todos los núcleos de la CPU cuando JVM es un solo proceso en Linux? ¿Hay algún buen artículo en profundidad que describa el tema en detalle?

EDIT # 1: No estoy buscando consejos sobre cómo implementar un programa multiproceso en Java. Estoy buscando una explicación de cómo JVM logra internamente usar múltiples núcleos en Linux / Windows mientras sigue siendo un proceso único en el sistema operativo.

EDIT # 2: La mejor explicación que pude encontrar es que Hotspot (Sun / Oracle JVM) implementa hilos como hilos nativos en Linux usando NPTL. Entonces, cada vez menos cada hilo en Java es un proceso ligero (hilo nativo) en Linux. Es claramente visible usandops -eLf comando que imprime no solo procesa id PPID) pero también id de hilo nativo LWP).

Más detalles también se pueden encontrar aquí:

http: //www.velocityreviews.com/forums/t499841-java-5-threads-in-linux.htm ¿Distinción entre hilos Java y hilos OS?

EDIT # 3: Wikipedia tiene una entrada corta pero agradable en NPTL con algunas referencias adicionaleshttp: //en.wikipedia.org/wiki/Native_POSIX_Thread_Librar

Respuestas a la pregunta(4)

Su respuesta a la pregunta