getClass().
If the class containing the synchronization is subclassed, the subclass
will
synchronize on a different class object. Usually the call to getClass() can be replaced with a class literal expression, for
example String.class. An even better solution is synchronizing on a private static final lock object, access to
which can be completely controlled.
Example:
synchronized(getClass()) {}