diff --git a/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java b/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java index 09871f83b96..5602bcbf56c 100644 --- a/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java +++ b/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java @@ -77,20 +77,23 @@ public static void logLifecycle(String fmt, Object ...args) { } public static void init() { - // Once jena is initialized, all calls are an immediate return. if ( initialized ) return ; - // Overlapping attempts to perform initialization will block on the synchronized. - synchronized(JenaSystem.class) { - if ( initialized ) - return ; + // Access the initialized flag to trigger class loading + var unused = LazyInitializer.IS_INITIALIZED; + } + + private static class LazyInitializer { + static final boolean IS_INITIALIZED = jenaSystemInitialization(); + + private static boolean jenaSystemInitialization() { + JenaSystem.initialized = true; // Set early to avoid blocking on static initialization. setup(); if ( DEBUG_INIT ) singleton.debug(DEBUG_INIT); singleton.initialize(); singleton.debug(false); - // Last so overlapping initialization waits on the synchronized - initialized = true; + return true; } }