From: Aaron M. <aar...@ho...> - 2005-09-15 02:18:26
|
Greetings, We are facing an issue whereby many threads seem to be waiting on the synchronized method ContextLoader.loadClass. We are using Hibernate, and typical stack dumps look like the following two excerpts: at org.mortbay.http.ContextLoader.loadClass(ContextLoader.java:170) - waiting to lock <0x152dc3e8> (a org.mortbay.http.ContextLoader) at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:102) at org.hibernate.impl.SessionFactoryImpl.getImplementors(SessionFactoryImpl.java:699) at org.mortbay.http.ContextLoader.loadClass(ContextLoader.java:170) - waiting to lock <0x152dc3e8> (a org.mortbay.http.ContextLoader) at antlr.ReflectHelper.classForName(ReflectHelper.java:17) at antlr.CharScanner.setTokenObjectClass(CharScanner.java:337) at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:25) at antlr.CharScanner.<init>(CharScanner.java:51) at antlr.CharScanner.<init>(CharScanner.java:60) at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:55) In my brief analysis, it seems as though ContextLoader.loadClass could simply be declared as not being syncrhonized. I didn't see any of the underlying code that was not thread safe. Also, it would seem to me that by convention the class loader that this method would be calling off to would by definition need to be thread safe. Does anyone have any thoughts on changing this method to not be synchronized? Is there something I've overlooked? Thanks, Aaron _________________________________________________________________ Is your PC infected? Get a FREE online computer virus scan from McAfee® Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 |