因此,我制作了自己的Java代理,其中包含ClassFileTransformer
,该代理实现了transform
方法。我观察到的是,此方法在不同的线程上被调用。我用Thread.currentThread()
进行了检查这些是不同的线程:
Thread[background-preinit,5,main]
Thread[main,5,main]
Thread[cluster-ClusterId{value='...', description='null'}-localhost:27017,5,main]
A ClassFileTransformer
应用于第一次加载类的线程。在进行重新转换的情况下,所有加载的类都会在调用Instrumentation.retransformClasses
的线程中进行检测。
因此:是的,重新转换发生在多个线程中。