2010-11-21 10 views
8

¿Cuál es la forma más fácil en Java para lograr multinúcleo? Y con esto, quiero decir, señalar específicamente qué núcleo ejecutar algunas partes del proyecto, por lo que los hilos java "normales" y viejos no son una opción.Lograr multi-core en Java: ¿cómo?

Hasta ahora, me sugirieron JConqurr (que es un kit de herramientas Eclipse para programación multi-core en java), JaMP (que extiende Java para OpenMP) y MPJ express, de los cuales no sé mucho. ¿Cuál de los anteriores considera el mejor o tiene otras sugerencias? Sería preferible medir de alguna manera el aumento/ganancia de rendimiento, pero no de forma exclusiva.

Cualquier ayuda sería muy apreciada. Gracias, twentynine.

+5

¿Es esa terminología ("lograr multi-core") utilizada en cualquier lugar? Cambiaría esta pregunta a "Ejecución de hilos en núcleos específicos en Java" – ripper234

+2

Creo que el término es "afinidad del procesador", que se aplica tanto a los núcleos como a los procesadores. – ide

+0

¿Por qué exactamente necesita poder establecer la afinidad del procesador para los hilos? ¿Por qué no dejar que la JVM maneje esas decisiones? – Darien

Respuesta

0

Scala es bastante popular para esto. Se ejecuta en la JVM y tiene enlaces para Java para conectarlos.

+0

El caso es que tengo que usar Java. No se permiten otros idiomas. – twentynine

2

Aunque es fácil escribir código multiproceso en Java, no hay nada en el tiempo de ejecución estándar de Java que le permita genéricamente decirle a la JVM o al sistema operativo cómo programar su programa.

Por lo tanto, necesitará tener el código específicamente para su JVM y/o su sistema operativo, y que el código no puede ser factible en Java (a menos de sumergirse en JNI o ​​JNA). Los programas externos pueden fijar procesos a una CPU en muchas versiones de Unix (y probablemente también en Windows), pero no creo que pueda hacer esto para hilos individuales.

+0

Sí, Java es "demasiado multiplataforma" para admitir eso ... – khachik

+0

@khachik, no creo que ese sea el motivo. Vea las características de integración de escritorio que han llegado con Java 6. Básicamente, los diseñadores de Java han ocultado intencionalmente un lote de detalles de implementación del programa que se está ejecutando. Esto permite que las JVM optimicen de formas que aún no se prevén cuando ocurren. –

Cuestiones relacionadas