No en mi experiencia. Es el código que llama al constructor, implícitamente o de otro modo, que necesita hacerse seguro para subprocesos si la aplicación lo requiere.
La razón es que solo un hilo debe inicializar un objeto a la vez, por lo que no es necesaria la sincronización para proteger el objeto que se inicializa dentro del propio constructor (si el objeto no ha finalizado la inicialización, no debería compartido entre hilos de todos modos).
Otra forma de verlo es esta: los objetos se deben tratar como lógicamente inexistentes hasta que sus constructores hayan regresado. Entonces, un hilo que está en el proceso de crear un objeto es el único hilo que "sabe" sobre él.
Por supuesto, se aplican las reglas de sincronización adecuados a cualquier recurso compartido el constructor sí accesos, sino que se aplica a cualquier función (que he encontrado personas que no se dan cuenta de esto, los constructores que creen son especiales y de alguna manera proporcionan acceso exclusivo a todos los recursos).
Esto no es del todo cierto. Hay problemas de seguridad de subprocesos para el constructor cuando utiliza un patrón de diseño singleton. Y ahora estoy buscando una solución para esta situación. – PDuarte