"http-nio-6050-exec-40" #127 daemon prio=5 os_prio=0 tid=0x00007f3d2001e000 nid=0x5d5c waiting for monitor entry [0x00007f3ce8ecc000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.ClassLoader.loadClass(ClassLoader.java:404)
- locked <0x00000006c9601a60> (a java.lang.Object)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.springframework.util.ClassUtils.isVisible(ClassUtils.java:1221)
at org.springframework.util.ClassUtils.getAllInterfacesForClassAsSet(ClassUtils.java:1149)
at org.springframework.util.ClassUtils.getAllInterfacesForClassAsSet(ClassUtils.java:1156)
at org.springframework.util.ClassUtils.getAllInterfacesForClass(ClassUtils.java:1112)
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
synchronized (getClassLoadingLock(name)) {
// First, check if the class has already been loaded
Class<?> c = findLoadedClass(name);
if (c == null) {
long t0 = System.nanoTime();
try {
if (parent != null) {
c = parent.loadClass(name, false);
} else {
c = findBootstrapClassOrNull(name);
}
} catch (ClassNotFoundException e) {这个线程在获得锁之后为什么还是Blocked?404行是 synchronized (getClassLoadingLock(name)) 。
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.ClassLoader.loadClass(ClassLoader.java:404)
- locked <0x00000006c9601a60> (a java.lang.Object)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.springframework.util.ClassUtils.isVisible(ClassUtils.java:1221)
at org.springframework.util.ClassUtils.getAllInterfacesForClassAsSet(ClassUtils.java:1149)
at org.springframework.util.ClassUtils.getAllInterfacesForClassAsSet(ClassUtils.java:1156)
at org.springframework.util.ClassUtils.getAllInterfacesForClass(ClassUtils.java:1112)
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
synchronized (getClassLoadingLock(name)) {
// First, check if the class has already been loaded
Class<?> c = findLoadedClass(name);
if (c == null) {
long t0 = System.nanoTime();
try {
if (parent != null) {
c = parent.loadClass(name, false);
} else {
c = findBootstrapClassOrNull(name);
}
} catch (ClassNotFoundException e) {这个线程在获得锁之后为什么还是Blocked?404行是 synchronized (getClassLoadingLock(name)) 。
那这一行锁定是什么意思?