Language-supported synchronization is a source of serious performance
problems in many Java programs. Even single-threaded applications may
spend up to half their time performing useless synchronization due to
the thread-safe nature of the Java libraries. We solve this performanc
e problem with a new algorithm that allows lock and unlock operations
to be performed with only a few machine instructions in the most commo
n cases. Our locks only require a partial word per object, and were im
plemented without increasing object size. We present measurements from
our implementation in the JDK 1.1.2 for AIX, demonstrating speedups o
f up to a factor of 5 in micro-benchmarks and up to a factor of 1.7 in
real programs.