首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测哪个Java线程正在侵入我的方法执行

检测哪个Java线程正在侵入我的方法执行
EN

Stack Overflow用户
提问于 2016-07-16 17:24:46
回答 4查看 82关注 0票数 0

我目前的代码面临着一个复杂的问题(这是相当巨大的)。为了实现我的任务,我们不得不在100-120个方法调用之间进行多次方法调用(请不要问我为什么要这样做,它是完全解耦的实现)。更详细地说,这是一个Java swing应用程序。当我执行10次动作时,大约3-4次迭代完成动作所需的时间非常高(大约300毫秒)。我尝试添加更多日志,以找出哪个方法调用花费了更多时间。我能够注意到的是,尖峰并不总是在一个地方,当我添加更多的日志时,我看到尖峰被推到了上面一点,当我删除一些代码时,尖峰移动到了下面一点。这清楚地表明一些后台线程实际上阻塞了我的执行(可能是由于线程切片或线程饥饿),任何原因都可能是原因。说到问题,我不知道是哪个后台线程打断了我。所以我想知道是否有任何方法(通过Java运行时参数)让我可以在控制台中打印哪个线程暂停了,哪个线程正在恢复执行?

EN

回答 4

Stack Overflow用户

发布于 2016-07-17 02:43:55

要知道调用方法的线程名称,请尝试以下命令:

代码语言:javascript
复制
public void myMethod(){
    String threadName = Thread.currentThread().getName();
    System.out.println("Thread name : " + threadName);
}
票数 0
EN

Stack Overflow用户

发布于 2016-07-17 03:17:15

我所做的是有一个监控线程,它定期检查延迟敏感型任务是否及时完成。如果没有,它会打印线程(可能还有其他感兴趣的线程)的堆栈跟踪。这对于跟踪模糊的延迟抖动很有用。

票数 0
EN

Stack Overflow用户

发布于 2016-07-17 03:56:23

Eclipse IDE的调试器能够显示一个线程正在等待另一个线程(debugging Java synchronization)。您必须在正确的时间点停止执行,这样才能看到正在发生的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38409655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档