【问题标题】:Is load time Bytecode Instrumentation done in parallel in Java?加载时间字节码检测是否在 Java 中并行完成?
【发布时间】:2020-05-12 10:58:45
【问题描述】:

所以,我制作了自己的 Java 代理,其中有一个 ClassFileTransformer,它实现了 transform 方法。我观察到的是这个方法是在不同的线程上调用的。 我用Thread.currentThread()检查了它 这些是不同的线程:

Thread[background-preinit,5,main]
Thread[main,5,main]
Thread[cluster-ClusterId{value='...', description='null'}-localhost:27017,5,main]

【问题讨论】:

  • 你说的是哪种转型?加载时转换?我希望加载时转换发生在触发特定类加载的同一线程中。
  • @Holger 编辑了标题,感谢您指出这一点。

标签: java multithreading instrumentation java-bytecode-asm javaagents


【解决方案1】:

ClassFileTransformer 应用在第一次加载类的线程中。在重新转换的情况下,所有加载的类都在调用Instrumentation.retransformClasses 的线程中进行检测。

因此:是的,重新转换发生在多个线程中。

【讨论】:

  • 好的,有道理。谢谢!
猜你喜欢
  • 2011-10-28
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多