[ https://issues.apache.org/jira/browse/TAP5-2546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15948475#comment-15948475 ]
Jochen Kemnade commented on TAP5-2546: -------------------------------------- The fix should work, but I wonder why the methods are synchronized at all. It was done for TAP5-1650, I'm trying to find out what the actual issue was. > Parallel class loading > ---------------------- > > Key: TAP5-2546 > URL: https://issues.apache.org/jira/browse/TAP5-2546 > Project: Tapestry 5 > Issue Type: Sub-task > Components: plastic > Reporter: Michael Mikhulya > > I would like to improve page loading time by improving its concurrent > execution. > Here is a first patch related to it: TAP5-2545 > Now the worst place from lock contention point of view is synchronization on > {{PlasticClassLoader}}. Actually there are two kind of synchronization: > {{synchronized}} methods in {{PlasticClassLoader}} and {{synchronized > (loader)}} sections in {{PlasticClassPool}}. > Recently most class loaders added support for parallel class loading: > https://bugs.eclipse.org/bugs/show_bug.cgi?id=464442 > https://bz.apache.org/bugzilla/show_bug.cgi?id=57681 > If we would like to split global lock, then we can use following trick for it. > We can substitute code like this: > {code:title=PlasticClassLoader.java} > public synchronized Class<?> defineClassWithBytecode(String className, > byte[] bytecode) > { > return defineClass(className, bytecode, 0, bytecode.length); > } > {code} > with following one: > {code:java} > public Class<?> defineClassWithBytecode(String className, byte[] bytecode) > { > synchronized (className.intern()) > { > return defineClass(className, bytecode, 0, bytecode.length); > } > } > {code} > It is just an idea to quickly check solution. > Can anybody check and discuss idea? Or even better to fix issue. :-) > I'm not an expert in concurrency and afraid making changes in such a critical > place at least before somebody reviewed my idea. So any feedback would be > appreciated. -- This message was sent by Atlassian JIRA (v6.3.15#6346)