Si existe una disputa significativa entre los recursos compartidos en los diferentes subprocesos, podría ser que bloquear y desbloquear objetos requiera una gran cantidad de IPI (interrupciones entre procesadores) y los procesadores pueden perder más tiempo descartando sus cachés L1 y L2 y recuperar datos de otras CPU de lo que realmente gastan haciendo progresos para resolver el problema.
Esto puede ser un problema si la aplicación tiene el modo too-fine-grained locking. (Una vez lo escuché resumir "no tiene sentido tener más de un bloqueo por línea de caché de la CPU", lo cual es definitivamente cierto, y tal vez demasiado detallado.)
Java "todos los objetos son un mutex" podría conducir a tener demasiados bloqueos en el sistema en ejecución si hay demasiados en vivo y disputados.
No tengo dudas de que alguien podría escribir intencionalmente tal aplicación, pero probablemente no sea muy común. La mayoría de los desarrolladores escriben sus aplicaciones para reducir la contención de recursos donde pueden.
Existen enlaces bastante prometedores para [Java, rendimiento y multinúcleo] (http://www.google.com/search?q=java+performance+multi+core). ¿Podría dejar una nota si esta entrada de blog está en la lista? –