我倾向于大量使用 eclipse 的“Open Call Hierarchy”功能,来跟踪大型 Java 项目中方法调用的去向。我对线程感到恼火,因为调用层次结构将Thread.run()
方法的调用者显示为各种内部 Java 线程函数,而不是Thread.start()
有效地导致线程运行的调用。
有什么方法可以让 Eclipse 将 Thread.start 调用显示为Thread.run()
方法的父级。也许一个插件可以做到这一点?
我倾向于大量使用 eclipse 的“Open Call Hierarchy”功能,来跟踪大型 Java 项目中方法调用的去向。我对线程感到恼火,因为调用层次结构将Thread.run()
方法的调用者显示为各种内部 Java 线程函数,而不是Thread.start()
有效地导致线程运行的调用。
有什么方法可以让 Eclipse 将 Thread.start 调用显示为Thread.run()
方法的父级。也许一个插件可以做到这一点?
如果我理解你的问题:你想找到Thread.start()
给定Runnable.run()
方法的方法调用者吗?
我发现这对于非常小的、短期运行的匿名 Runnables 很有用。
但是,在更一般的情况下,我不确定进一步的实用性:
Thread.run()
可能会做到这一点,但是您对Thread.start()
方法的调用者更感兴趣有趣的问题。
欢迎您查看nWire。它是一种新工具,用于在一个动态视图中探索代码的所有关联。非常方便且易于使用。它将调用者和实现者(以及所有其他关联)组合在一起。希望得到您的反馈。
感谢您的回复詹姆士。根据您提出的前两点,您说(在匿名和非匿名 Runnable 中)查看 Runnable 构造函数的调用层次结构会很有用 - 是的,我同意!这通常是我最终会做的事情。但这通常意味着在两个层次结构之间频繁切换,一次只能显示其中一个。我想通过保留一个层次结构来避免这种情况。
在 Runnable 构造函数和对 run() 的调用之间没有直接的调用层次结构,因此在我看来,通过将构造函数添加为 run() 的“调用者”来扩展调用层次结构是不合适的。但是,调用 start() 或将线程添加到 Executor (或者可能是 executor 中的 run() 调用)可能适合显示在调用层次结构中。
我真的只是想知道是否有一个我无法找到的现有解决方案。我想如果我足够想要的话,我只需要自己尝试一个插件。
我尝试了实施者插件。它很有用,但不适用于这个特殊问题!
我还尝试了 nWire。它有很多我没有时间充分探索的功能,但我找不到一种方法来做我正在寻找的东西。