Use advanced Java locks when intrinsic synchronization is too blunt and you need clearer control over fairness, read/write access, or optimistic reads.
Advanced Java locks exist for the cases where synchronized is correct but not expressive enough. They provide stronger control over lock acquisition, interruption, read/write separation, and optimistic access patterns.
That extra control comes with extra responsibility. These tools are valuable when contention patterns are well understood, but they can make code harder to review if they are introduced casually.
The child pages focus on the main options and when each one is justified: ReentrantLock, ReentrantReadWriteLock, StampedLock, and optimistic techniques.