Inspectopedia
 
2024.3

Synchronization on 'this'

Warning
New
Last modified: 03 December 2024

Reports synchronization on this or class expressions. The reported constructs include synchronized blocks and calls to wait(), notify() or notifyAll().

There are several reasons synchronization on this or class expressions may be a bad idea:

  1. it makes synchronization a part of the external interface of the class, which makes a future change to a different locking mechanism difficult,

  2. it becomes hard to track just who is locking on a given object,

  3. it makes a denial-of-service attack possible, either on purpose or it can happen easily by accident when subclassing.

As an alternative, consider synchronizing on a private final lock object, access to which can be completely controlled.

Example: