Static shared data should not be protected using instance locks because these are ineffective when two or more instances of the class are created. Consequently, the shared state is not safe for concurrent access unless a static lock object is used. If the class can interact with untrusted code, the lock must also be private and final, as per CON04CON07-J. Use private final lock objects to synchronize classes that may interact with untrusted code.
...