In a multi-threaded situation, un-``++synchronized++`` lazy initialization of static fields could mean that a second thread has access to a half-initialized object while the first thread is still creating it. Allowing such access could cause serious bugs. Instead. the initialization block should be ``++synchronized++``.
Similarly, updates of such fields should also be ``++synchronized++``.
This rule raises an issue whenever a lazy static initialization is done on a class with at least one ``++synchronized++`` method, indicating intended usage in multi-threaded applications.