加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java线程开始时间

发布时间:2020-12-15 03:07:41 所属栏目:Java 来源:网络整理
导读:是否可以在JVM中检索给定 java线程的开始时间? 我有一个线程转储,我正在查看一些有问题的线程,我想使用时间与应用程序日志中的特定操作相关联. 解决方法 是的,如果您在 Linux上运行Oracle JDK / OpenJDK,则可以. 想法是找到本机线程ID(TID),然后查看/ proc
是否可以在JVM中检索给定 java线程的开始时间?

我有一个线程转储,我正在查看一些有问题的线程,我想使用时间与应用程序日志中的特定操作相关联.

解决方法

是的,如果您在 Linux上运行Oracle JDK / OpenJDK,则可以.

想法是找到本机线程ID(TID),然后查看/ proc / JAVA_PID / task / TID伪文件的修改时间.

如果你有一个线程转储,那么这是微不足道的:本机线程id将由线程头打印.

例如,Java进程PID是2086.您键入

$jstack 2086

并使用以下感兴趣的线程获取堆栈跟踪:

"Thread-26" prio=10 tid=0x00007f96c80c2800 nid=0x86a waiting on condition [0x00007f96c0ff2000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)

其中nid = 0x86a是本机线程ID. 0x86a = 2154,所以你想要探索过程2086的任务2154:

$ls -ld /proc/2086/task/2154
dr-xr-xr-x 6 user user 0 Mar 10 23:12 /proc/2086/task/2154
                         ^^^^^^^^^^^^
                         the thread start time

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读