簡體   English   中英

在Eclipse中調用Thread.run()的層次結構

[英]Call hierarchy of Thread.run() in Eclipse

我傾向於大量使用eclipse的“ Open Call Hierarchy”功能來跟蹤方法調用在大型Java項目中的去向。 我被Threads激怒了,因為調用層次結構將Thread.run()方法的調用者顯示為各種內部Java線程函數,而不是Thread.start()調用,后者實際上導致了線程的運行。

有什么方法可以使Eclipse將Thread.start調用顯示為Thread.run()方法的父Thread.run() 也許有插件可以做到這一點?

如果我理解您的問題,那么您想為給定的Runnable.run()方法找到Thread.start()方法的調用者嗎?

我發現這對於非常小的短期運行的匿名Runnables很有用。

但是,在更一般的情況下,我不確定是否進一步實用:

  • 標准做法是將Runnable作為構造函數參數傳遞給Thread。 通常,通過預先構造的線程(例如Executors,asynchExec)調用Runnable。 在這種情況下,它就是您感興趣的構造函數的調用者。
  • 非匿名Runnable可能會通過其構造函數進行追溯(該ctor上的調用層次結構將是一個好方法)
  • 可以重寫Thread.run()方法,但是您對Thread.start()方法的調用者更感興趣
  • 調用層次結構視圖(AFAIK)並不是很可擴展(但是, 實現者曾經這樣做,但是在將其集成到核心JDT中之前,它是由與原始調用層次結構相同的人編寫的)。

有趣的問題。

歡迎您查看nWire 這是一個用於在一個動態視圖中瀏覽代碼的所有關聯的新工具。 非常方便和易於使用。 它將調用者和實現者(以及所有其他關聯)組合在一起。 希望收到您的反饋。

感謝您的回答,詹姆士。 在前面兩點中,您說(在匿名和非匿名Runnable中)查看Runnable構造函數的調用層次結構將很有用-是的,我同意! 這通常是我最終要做的。 但這通常意味着在兩個層次結構之間頻繁切換,一次只能顯示其中一個。 我想通過保留一個層次結構來避免這種情況。

在Runnable構造函數和對run()的調用之間沒有直接的調用層次結構,因此在我看來,通過將構造函數添加為run()的“調用方”來擴展調用層次結構是不合適的。 但是,調用start()或將線程添加到執行程序(或執行程序內的run()調用)可能適合在調用層次結構中顯示。

我真的只是想知道是否存在無法解決的現有解決方案。 我想如果我想要足夠的話,我只需要自己嘗試一個插件即可。

我嘗試了實現者插件。 這很有用,但不適用於此特定問題!

我也嘗試了nWire。 它有很多功能,我還沒有時間去充分研究,但是我找不到在這里尋求解決方案的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM