como se mencionó, el valor predeterminado es usar un tlab. El behavious se describe en this glossary de la siguiente manera
TLAB
Thread-local allocation buffer. Used to allocate heap space quickly without synchronization. Compiled code has a "fast path" of a few instructions which tries to bump a high-water mark in the current thread's TLAB, successfully allocating an object if the bumped mark falls before a TLAB-specific limit address.
Más detalles sobre el encolado en this blog & todos los detalles que pueda desear en this blog.
En resumen, es un subproceso local a menos que el TLAB esté lleno, en cuyo caso deberá acceder al grupo compartido y esta es una operación CAS.
Otro factor de complicación podría ser this bug que describe la compartición falsa en el marcado de la tarjeta que no es un bloqueo como tal, pero perjudicará el rendimiento (si es por eso que está preguntando sobre el bloqueo). Parece que esto está arreglado en java7.
+1: UseTLAB está activado de forma predeterminada en Sun/Oracle JVM. –
@PeterLawrey: Gracias - editado apropiadamente. –