[ 
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)
 

```java
protected Class<?> loadClass(String name, boolean resolve)
        throws ClassNotFoundException {
    synchronized (getClassLoadingLock(name)) {
        // ...
    }
}
```

  was:
 

org.codehaus.groovy.runtime.callsite.CallSiteClassLoader#loadClass is using 
`synchronized` keyword,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)
>  
> ```java
> protected Class<?> loadClass(String name, boolean resolve)
>         throws ClassNotFoundException {
>     synchronized (getClassLoadingLock(name)) {
>         // ...
>     }
> }
> ```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to