summaryrefslogtreecommitdiff
path: root/plugins/InspectionGadgets/test/com/siyeh/igtest/initialization/non_thread_safe_lazy_initialization/NonThreadSafeLazyInitialization.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/InspectionGadgets/test/com/siyeh/igtest/initialization/non_thread_safe_lazy_initialization/NonThreadSafeLazyInitialization.java')
-rw-r--r--plugins/InspectionGadgets/test/com/siyeh/igtest/initialization/non_thread_safe_lazy_initialization/NonThreadSafeLazyInitialization.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/initialization/non_thread_safe_lazy_initialization/NonThreadSafeLazyInitialization.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/initialization/non_thread_safe_lazy_initialization/NonThreadSafeLazyInitialization.java
new file mode 100644
index 000000000000..9b5987966ca6
--- /dev/null
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/initialization/non_thread_safe_lazy_initialization/NonThreadSafeLazyInitialization.java
@@ -0,0 +1,64 @@
+package com.siyeh.igtest.threading;
+
+public class NonThreadSafeLazyInitialization {
+ private static Object foo;
+ private Object instance;
+
+ public Object getInstance() {
+ if (instance == null) {
+ instance = new Object();
+ }
+ return instance;
+ }
+
+ static
+ {
+ if (foo == null) {
+ foo = new Object();
+ }
+
+ }
+
+ {
+ if (foo == null) {
+ <warning descr="Lazy initialization of 'static' field 'foo' is not thread-safe">foo</warning> = new Object();
+ }
+
+ }
+
+ public void instMethod() {
+ if (foo == null) {
+ <warning descr="Lazy initialization of 'static' field 'foo' is not thread-safe">foo</warning> = new Object();
+ }
+ }
+
+ public static void staticMethod() {
+ if (foo == null) {
+ <warning descr="Lazy initialization of 'static' field 'foo' is not thread-safe">foo</warning> = new Object();
+ }
+ }
+
+ public void lockedInstMethod() {
+ synchronized (NonThreadSafeLazyInitialization.class) {
+ if (foo == null) {
+ foo = new Object();
+ }
+ }
+ }
+
+ private static String example = null;
+
+ public Object getInstance2() {
+ if (foo == null) {
+ while (true) {
+ foo = "";
+ }
+ }
+ return foo;
+ }
+
+ public Object getInstance3() {
+ if (foo == null) <warning descr="Lazy initialization of 'static' field 'foo' is not thread-safe">foo</warning> = "";
+ return foo;
+ }
+}