En Java, ¿hay una forma programática de averiguar cuántos subprocesos concurrentes admite una CPU?Hilos por procesador
actualización
Para aclarar, yo no estoy tratando de clavar la CPU con hilos y estoy consciente de Runtime.getRuntime(). AvailableProcessors función(), que me proporciona parte de la información I' Estoy buscando.
quiero saber si hay una manera de sintonizar automáticamente el tamaño del grupo de subprocesos de manera que:
- si estoy corriendo en un servidor de 1 año de edad, me sale 2 hilos (1 hilo por CPU x un multiplicador arbitrario de 2)
- si cambio a un quad core Intel i7 dentro de dos años (que admite 2 hilos por núcleo), obtengo 16 hilos (2 hilos lógicos por CPU x 4 CPU x el arbitrario multiplicador de 2).
- si, en lugar, utilizo un servidor UltraSPARC T2 ocho núcleo (que soporta 8 hilos por núcleo), consigo 128 hilos (8 hilos por CPU x 8 CPU x el multiplicador arbitrario de 2)
- si desplegar el el mismo software en un clúster de 30 máquinas diferentes, potencialmente compradas en diferentes años, no necesito leer las especificaciones de la CPU y configurar las opciones de configuración para cada una de ellas.
Leí en alguna parte que hay un límite estricto (que Java impone) en el rango de 32k. De manera realista, tu aplicación se detendrá mucho antes de eso. –
Sí, probablemente. Java no está diseñado para usar hilos de miles. – JesperE
Supongo que cuando dices límites, te refieres a concurrencia emulada (a diferencia de la concurrencia de hardware verdadero). No es ese el caso? – Leo