
resources.report.rules.pmd.NonThreadSafeSingleton.html Maven / Gradle / Ivy
NonThreadSafeSingleton
NonThreadSafeSingleton
Non-thread safe singletons can result in bad state changes. Eliminate
static singletons if possible by instantiating the object directly. Static
singletons are usually not needed as only a single instance exists anyway.
Other possible fixes are to synchronize the entire method or to use an
initialize-on-demand holder class (do not use the double-check idiom).
See Effective Java, item 48.
This rule is defined by the following Java class:
net.sourceforge.pmd.rules.design.NonThreadSafeSingleton
Example:
private static Foo foo = null;
//multiple simultaneous callers may see partially initialized objects
public static Foo getFoo() {
if (foo==null)
foo = new Foo();
return foo;
}
This rule has the following properties:
Name Default value Description
checkNonStaticMethods
Do not set this to false and checkNonStaticFields to true
checkNonStaticFields
Do not set this to true and checkNonStaticMethods to false
© 2015 - 2025 Weber Informatics LLC | Privacy Policy