You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/02/10 20:42:48 UTC

svn commit: r1444590 - /jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java

Author: andy
Date: Sun Feb 10 19:42:48 2013
New Revision: 1444590

URL: http://svn.apache.org/r1444590
Log:
Thread safe initialization

Modified:
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java?rev=1444590&r1=1444589&r2=1444590&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java Sun Feb 10 19:42:48 2013
@@ -43,20 +43,25 @@ public class RIOT
         SysRIOT.strictMode = state ;
         SysRIOT.StrictXSDLexicialForms = state ;
     }
-    
-    static boolean initialized = false ;
-    public static synchronized void init()
+
+    private static volatile boolean initialized = false ;
+    private static final Object     initLock    = new Object() ;
+
+    public static void init()
     {
-        if ( initialized ) return ;
-        initialized = true ;
-        
-        String NS = RIOT.PATH ;
-        SystemInfo sysInfo2 = new SystemInfo(RIOT.riotIRI, RIOT.VERSION, RIOT.BUILD_DATE) ;
-        ARQMgt.register(NS+".system:type=SystemInfo", sysInfo2) ;
-        SystemARQ.registerSubSystem(sysInfo2) ;
-        
-        RDFLanguages.init() ;
-        RDFParserRegistry.init() ;
-        IO_Jena.wireIntoJena() ;
-    }
+        if ( initialized )
+            return ;
+        synchronized(initLock) {
+            if ( initialized ) return ;
+            initialized = true ;
+
+            String NS = RIOT.PATH ;
+            SystemInfo sysInfo2 = new SystemInfo(RIOT.riotIRI, RIOT.VERSION, RIOT.BUILD_DATE) ;
+            ARQMgt.register(NS+".system:type=SystemInfo", sysInfo2) ;
+            SystemARQ.registerSubSystem(sysInfo2) ;
+
+            RDFLanguages.init() ;
+            RDFParserRegistry.init() ;
+            IO_Jena.wireIntoJena() ;
+        }    }
 }