分享

打印当前java程序的线程堆栈

 不老松 2020-02-21
打印当前java程序的线程堆栈,包括线程状态,名字,监视器
</div>

打印当前java程序的线程堆栈    

ThreadMXBean bean = ManagementFactory.getThreadMXBean(); Map < Thread, StackTraceElement[] > traceMap = Thread.getAllStackTraces(); Set < Thread > allThreads = traceMap.keySet(); for (Thread thread: allThreads) { StringBuilder msg = new StringBuilder(); long tid = thread.getId(); ThreadInfo threadInfo = bean.getThreadInfo(tid); if(threadInfo == null){ continue; } String lockInfo = threadInfo.getLockName() == null ? ' ' : ', ' + threadInfo.getLockName(); msg.append('thread id: ' + tid + ', name: ' + threadInfo.getThreadName() + ', ' + threadInfo.getThreadState() + lockInfo).append('\n'); StackTraceElement[] stackTraces = thread.getStackTrace(); for (StackTraceElement stackTrace: stackTraces) { msg.append('\t').append(stackTrace).append('\n'); } System.out.println(msg); }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多