[
https://issues.apache.org/jira/browse/GROOVY-11712?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
btpka3 updated GROOVY-11712:
----------------------------
Description:
org.codehaus.groovy.runtime.callsite.CallSiteClassLoader#[loadClass|https://github.com/apache/groovy/blob/GROOVY_4_0_27/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteClassLoader.java#L47](String,boolean)
is using `synchronized` keyword at method level,
this can be improved by using className level lock,
such as JDK's
java.lang.ClassLoader#[loadClass|https://github.com/openjdk/jdk/blob/jdk-11%2B28/src/java.base/share/classes/java/lang/ClassLoader.java#L565C24-L565C33](String,boolean)
{code:java}
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {
synchronized (getClassLoadingLock(name)) { // 👍🏻👍🏻👍🏻
// ...
}
}
{code}
was:
org.codehaus.groovy.runtime.callsite.CallSiteClassLoader#[loadClass|https://github.com/apache/groovy/blob/GROOVY_4_0_27/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteClassLoader.java#L47](String,boolean)
is using `synchronized` keyword at method level,
this can be improved by using className level lock,
such as JDK's
java.lang.ClassLoader#[loadClass|https://github.com/openjdk/jdk/blob/jdk-11%2B28/src/java.base/share/classes/java/lang/ClassLoader.java#L565C24-L565C33](String,boolean)
```java
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {
synchronized (getClassLoadingLock(name)) {
// ...
}
}
```
> CallSiteClassLoader loadClass using className level lock
> --------------------------------------------------------
>
> Key: GROOVY-11712
> URL: https://issues.apache.org/jira/browse/GROOVY-11712
> Project: Groovy
> Issue Type: Improvement
> Affects Versions: 4.0.27
> Reporter: btpka3
> Priority: Major
>
>
> org.codehaus.groovy.runtime.callsite.CallSiteClassLoader#[loadClass|https://github.com/apache/groovy/blob/GROOVY_4_0_27/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteClassLoader.java#L47](String,boolean)
> is using `synchronized` keyword at method level,
> this can be improved by using className level lock,
> such as JDK's
> java.lang.ClassLoader#[loadClass|https://github.com/openjdk/jdk/blob/jdk-11%2B28/src/java.base/share/classes/java/lang/ClassLoader.java#L565C24-L565C33](String,boolean)
>
> {code:java}
> protected Class<?> loadClass(String name, boolean resolve)
> throws ClassNotFoundException {
> synchronized (getClassLoadingLock(name)) { // 👍🏻👍🏻👍🏻
> // ...
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)