Java-ClassFileTransformer.transform(…)对同一类加载器的concurrect调用&;类名对

Java-ClassFileTransformer.transform(…)对同一类加载器的concurrect调用&;类名对,java,concurrency,transform,instrumentation,Java,Concurrency,Transform,Instrumentation,J2SE 5.0方法ClassFileTransformer.transform的规范(ClassLoader ClassLoader,String className,Class classBeingRedefined,ProtectionDomain ProtectionDomain,byte[]classfileBuffer)说明: transformer将为每个新的类定义和 类别重新定义。请求一个新的类定义 使用ClassLoader.defineClass。重新定义类的请求是 使用In

J2SE 5.0方法ClassFileTransformer.transform的规范(ClassLoader ClassLoader,String className,Class classBeingRedefined,ProtectionDomain ProtectionDomain,byte[]classfileBuffer)说明:

transformer将为每个新的类定义和 类别重新定义。请求一个新的类定义 使用ClassLoader.defineClass。重新定义类的请求是 使用Instrumentation.Classes或其本机等效项制作。 在处理请求期间调用转换器,然后 类文件字节已被验证或应用

使用这些信息,我无法确定是否可以为同一运行时类(classLoader&className)同时调用方法ClassFileTransformer.transform。我知道可以为同一个类并发调用methodinstrumentation.redefineClasses,但这并不意味着这样的调用会导致为同一个类并发调用ClassFileTransformer.transform。有什么方法可以澄清我的不理解吗


这在我的例子中很重要,因为我使用Javassist进行转换,并且可以从并发运行的方法ClassFileTransformer.transform中使用相同的CtClass实例。目前,我在synchronized(CtClass)块中处理CtClass实例,以防万一。

我只是尝试调用方法
插装。同时为同一个类重新定义类
,并检查是否同时调用了类文件转换器
转换
方法。答案是肯定的,
ClassFileTransformer.transform
方法可以由JVM为同一个类同时调用。

我只是尝试为同一个类同时调用方法
插装。重新定义类
,并检查我的类文件转换器
transform
方法是否同时调用。答案是肯定的,
ClassFileTransformer.transform
方法可以由JVM为同一个类并发调用