diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java index 0996f3002..26e009dcb 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java @@ -25,15 +25,16 @@ public class InterceptorInstanceLoader { public static T load(String className, ClassLoader targetClassLoader) throws InvocationTargetException, IllegalAccessException, InstantiationException, ClassNotFoundException { - if (InterceptorInstanceLoader.class.getClassLoader().equals(targetClassLoader)) { - return (T) targetClassLoader.loadClass(className).newInstance(); - } - String instanceKey = className + "_OF_" + targetClassLoader.getClass().getName() + "@" + Integer.toHexString(targetClassLoader.hashCode()); Object inst = INSTANCE_CACHE.get(instanceKey); if (inst != null) { return (T) inst; } + + if (InterceptorInstanceLoader.class.getClassLoader().equals(targetClassLoader)) { + return (T) targetClassLoader.loadClass(className).newInstance(); + } + instanceLoadLock.lock(); try { try {