...
Using a private lock may only be achieved with block synchronization, as static method synchronization always uses the intrinsic lock of the object's class. However, block synchronization is also preferred over method synchronization, because it is easy to move operations out of the synchronized block when they might take a long time and they are not truly a critical section.
Exceptions
EX1: Classes may violate this guideline if they sufficiently document that callers must not pass the respective objects to untrusted code. Additionally, trusted callers must not use directly or indirectly, any untrusted classes that violate his guideline.
Risk Assessment
Exposing the class object to untrusted code can result in denial-of-service.
...