识别java堆栈跟踪中最早的线程

识别java堆栈跟踪中最早的线程,java,jboss,stack-trace,Java,Jboss,Stack Trace,我正在检查一个Java线程转储,从那时起,我的部分应用程序(部署在JBoss4.2.3上)由于阻塞数据库查询而被锁定。共有6个线程,所有线程都在执行各种查询,我想确定哪个线程是第一个执行的,因为这将是初始原因的候选线程 我是否可以比较每个线程上的CPU总时间和用户时间,并将时间最长的线程视为最早的线程(第一个运行)?或者不同的线程可能被分配不同的时间量 例如(简单的例子) 螺纹ajp-0.0.0-8009-19(Id=21)可运行 总CPU时间100000毫秒,用户时间100000毫秒 堆叠在这

我正在检查一个Java线程转储,从那时起,我的部分应用程序(部署在JBoss4.2.3上)由于阻塞数据库查询而被锁定。共有6个线程,所有线程都在执行各种查询,我想确定哪个线程是第一个执行的,因为这将是初始原因的候选线程

我是否可以比较每个线程上的CPU总时间和用户时间,并将时间最长的线程视为最早的线程(第一个运行)?或者不同的线程可能被分配不同的时间量

例如(简单的例子)

螺纹ajp-0.0.0-8009-19(Id=21)可运行
总CPU时间100000毫秒,用户时间100000毫秒
堆叠在这里。。。
螺纹ajp-0.0.0-8009-19(内径=200)可运行
总CPU时间200000毫秒,用户时间200000毫秒
堆叠在这里。。。
螺纹ajp-0.0.0-8009-19(内径=2590)可运行
CPU总时间300000毫秒,用户时间300000毫秒<---此线程必须在其他线程之前启动
堆叠在这里。。。

总CPU时间或总用户时间不会为您提供有关线程年龄的任何信息。它只能说最小的螺纹寿命就是这个值


<>你可以考虑使用一个线程转储分析器,例如,或

,你可以考虑使用一个线程转储分析器,比如,或者谢谢-但是我不确定这是否添加了我需要的信息(如果它没有在总CPU时间/总用户时间内),总CPU时间或总用户时间不给你关于线程的年龄的任何信息。它只能说线程的最小使用年限就是这个值。谢谢@NandakishoreK-你想把它作为答案发布,我会接受吗?出于兴趣-什么时候会出现线程A比线程B老,但线程A的CPU/用户时间更高的情况?这取决于调度程序。如果线程A更受CPU限制,而线程B更受I/O限制,那么调度程序可能会试探性地决定线程A需要更多的CPU时间,因此其CPU时间会更高。
Thread ajp-0.0.0.0-8009-19 (Id = 21) RUNNABLE 
  Total CPU time 100000 ms, User time 100000 ms 

  stack here...

 Thread ajp-0.0.0.0-8009-19 (Id = 200) RUNNABLE 
  Total CPU time 200000 ms, User time 200000 ms 

  stack here...

Thread ajp-0.0.0.0-8009-19 (Id = 2590) RUNNABLE 
  Total CPU time 300000 ms, User time 300000 ms  < --- THIS THREAD MUST HAVE STARTED BEFORE OTHERS

  stack here...