Index: src/java/org/datanucleus/JDOClassLoaderResolver.java
===================================================================
--- src/java/org/datanucleus/JDOClassLoaderResolver.java	(revision 10504)
+++ src/java/org/datanucleus/JDOClassLoaderResolver.java	(working copy)
@@ -81,13 +81,13 @@
     protected int userRegisteredLoaderHashCode = 0;
 
     /** Cache for loaded classes */
-    protected Map<String, Class> loadedClasses = new WeakValueMap();
+    protected Map<String, Class> loadedClasses = Collections.synchronizedMap(new WeakValueMap());
 
     /** Cache for loaded classes */
-    protected Map<String, Class> unloadedClasses = new WeakValueMap();
+    protected Map<String, Class> unloadedClasses = Collections.synchronizedMap(new WeakValueMap());
 
     /** Cache for resources */
-    protected Map<String, URL> resources = new WeakValueMap();
+    protected Map<String, URL> resources = Collections.synchronizedMap(new WeakValueMap());
 
     /** The primary class */
     ThreadLocal primary = new ThreadLocal();
@@ -830,4 +830,4 @@
             " runtimeLoader=" + runtimeLoader + 
             " registeredLoader=" + userRegisteredLoader;
     }
-}
\ No newline at end of file
+}

