java - 如何统计线程池中线程的有效执行时间,而不是线程的生命周期?

标签 java time threadpool

我遇到了线程超时问题,我想可能是线程调度问题,但不确定是不是这样。 业务场景如下。

我的同事负责编写该服务。他使用了java的多线程技术,线程池使用了Executors.newFixedThreadPool。该服务需要处理一些复杂的业务逻辑。复杂的业务逻辑需要我来支持。我写了一个打包成jar的算法模块,算法模块的压测时间平均在10ms左右。当然这是在单线程环境下的结果。当他把我的模块放入程序中运行时,使用压测程序测试服务时,线程统计算法超过几分钟。当然,这个时间就是线程的生命周期。当单机使用相同参数调用的程序时,时间依然是几毫秒。所以问题就出现了。为什么超时?

我的同事没有向我提供该计划的更多细节。他认为该计划很耗时。我对他的行为很生气,但问题总是需要解决的。我对线程调度算法不太了解,他也是。现在想统计线程的有效执行时间,但是在java.lang.Thread对象中没有看到相关方法,不知道是否还有其他方法可以统计。

我也想知道是否还有其他方法可以解释这个问题。

最佳答案

我相信您正在寻找的是一个分析器。探查器允许您在运行时检测代码,而无需修改源代码(或打包的 jar)来添加性能测量逻辑。探查器将告诉您每个线程的执行时间以及每个特定方法被调用/执行的时间。

有很多 Java 分析器,包括 gui 和 cmd。尝试使用 visualvmjProfilerJava Mission Control

关于java - 如何统计线程池中线程的有效执行时间,而不是线程的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58025795/

相关文章:

SWT 中的 java.awt.Robot 等效项

c++ - 尝试使用 time.h 库计算两个日期之间的差异

Java:ExecutorService 在特定队列大小后阻止提交

tomcat中的javaagent错误

java - 微服务架构,在这种情况下什么是服务

Php验证24小时时间格式

linux - 在服务器 : Etc/UTC or Etc/Universal? 中设置哪个时区

java - Executorservice worker 没有在单独的线程中运行

python - PyQt4中QWebView的多线程

java - 如何为 HTTPS 调用指定出站证书别名?