use concurrent hash map for parser instances

git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1903075 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java b/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
index 0d1613f..48499c0 100755
--- a/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
+++ b/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
@@ -23,6 +23,7 @@
 import javax.xml.namespace.QName;
 import java.io.File;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * An implementation of BindingConfig
@@ -70,16 +71,11 @@
 
     }
 
-    private static final Map<JavaFilesClasspath, Parser> _parserMap = new HashMap<>();
+    private static final ConcurrentHashMap<JavaFilesClasspath, Parser> _parserMap = new ConcurrentHashMap<>();
 
     private static Parser parserInstance(File[] javaFiles, File[] classpath) {
-        JavaFilesClasspath jfc = new JavaFilesClasspath(javaFiles, classpath);
-        Parser parser = _parserMap.get(jfc);
-        if ( parser == null ) {
-            parser = new Parser(javaFiles, classpath);
-            _parserMap.put(jfc, parser);
-        }
-        return parser;
+        return _parserMap.computeIfAbsent(new JavaFilesClasspath(javaFiles, classpath), jfc ->
+                new Parser(jfc.javaFiles, jfc.classpath));
     }
 
     public static BindingConfig forConfigDocuments(Config[] configs, File[] javaFiles, File[] classpath) {
diff --git a/src/main/java9/module-info.class b/src/main/java9/module-info.class
index 37f1f8d..323bccd 100644
--- a/src/main/java9/module-info.class
+++ b/src/main/java9/module-info.class
Binary files differ