[jboss-cvs] JBossAS SVN: r79343 - projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Oct 10 09:21:28 EDT 2008


Author: adrian at jboss.org
Date: 2008-10-10 09:21:28 -0400 (Fri, 10 Oct 2008)
New Revision: 79343

Modified:
   projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
Log:
[JBCL-49] - Move perliminaries out of the classloader synchronization in loadClass

Modified: projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java	2008-10-10 13:21:14 UTC (rev 79342)
+++ projects/jboss-cl/branches/Branch_2_0/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoader.java	2008-10-10 13:21:28 UTC (rev 79343)
@@ -347,7 +347,7 @@
    }
    
    @Override
-   protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
+   protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
    {
       boolean trace = log.isTraceEnabled();
       if (trace)
@@ -367,29 +367,34 @@
          result = Class.forName(name, true, this);
          if (trace)
             log.trace(this + " resolved array "  + ClassLoaderUtils.classToString(result));
+         if (result != null)
+            return result;
       }
       
-      // Not already loaded use the domain
-      if (result == null)
-         result = loadClassFromDomain(name, trace);
-      
-      // Still not found
-      if (result == null)
+      synchronized (this)
       {
-         if (trace)
-            log.trace(this + " class not found " + name);
-         throw new ClassNotFoundException(name + " from " + toLongString());
+         // Not already loaded use the domain
+         if (result == null)
+            result = loadClassFromDomain(name, trace);
+         
+         // Still not found
+         if (result == null)
+         {
+            if (trace)
+               log.trace(this + " class not found " + name);
+            throw new ClassNotFoundException(name + " from " + toLongString());
+         }
+         
+         // Link the class if requested
+         if (resolve)
+         {
+            if (trace)
+               log.trace(this + " resolveClass " + ClassLoaderUtils.classToString(result));
+            resolveClass(result);
+         }
+         
+         return result;
       }
-      
-      // Link the class if requested
-      if (resolve)
-      {
-         if (trace)
-            log.trace(this + " resolveClass " + ClassLoaderUtils.classToString(result));
-         resolveClass(result);
-      }
-      
-      return result;
    }
 
    @Override




More information about the jboss-cvs-commits mailing list