diff --git a/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java b/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java index 79893dfb203..f001c2b2581 100644 --- a/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java +++ b/spring-core/src/main/java/org/springframework/util/function/SingletonSupplier.java @@ -47,12 +47,13 @@ public class SingletonSupplier implements Supplier implements Supplier + // specific determination follows within full initialization lock. + // Pre-initialized null values are rare, so we accept the locking + // overhead in favor of a defensive fast path for non-null values. + this.initializationLock.lock(); try { instance = this.singletonInstance; if (!this.initialized) { @@ -115,7 +120,7 @@ public class SingletonSupplier implements Supplier