所以,我自己做了一个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
.
因此:是的,重构发生在多线程中。