如何查找最初启动线程的位置

假设我有一个应用程序可以生成多个线程,如果需要做任务…所以没什么特别的。 我使用Eclipse编写和调试Java应用程序。 一个线程(让它称之为“异步任务”)在离开run()方法后立即重新生成(所以有bug并且我想找到这种行为的原因)。

我的问题是,如果我使用eclipse IDE(调试透视图…)暂停这个线程“异步任务”有没有办法找出这个线程最初启动的位置(例如使用Debug视图或任何其他)? 因为我想知道是谁产生了这个post(没有进行文本搜索或类似的东西)。

有没有一个很好的方法来获取这些信息?

我会在Thread.start()设置一个断点并启用一个条件

在此处输入图像描述

每当启动名为“async task”的线程时,条件将被计算为true,并且调用start方法的线程将被暂停。 然后你可以在堆栈跟踪中看到来电的来源。

由于debug将挂起整个JVM无法使用debuger检查新thread是否启动。

您可以放置​​一些logs并检查threads在那里的工作方式。