为了账号安全,请及时绑定邮箱和手机立即绑定

获取当前在Java中运行的所有线程的列表

获取当前在Java中运行的所有线程的列表

开心每一天1111 2019-06-19 17:33:24
获取当前在Java中运行的所有线程的列表是否可以获得当前jvm中所有正在运行的线程的列表(包括线程)?不从我的班级开始)?是否也有可能获得Thread和Class列表中所有线程的对象?我想通过代码来完成这个任务。
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

若要获得可迭代集,请执行以下操作:

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();


查看完整回答
反对 回复 2019-06-19
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

获取根的句柄ThreadGroup,就像这样:

ThreadGroup rootGroup = Thread.currentThread().getThreadGroup();ThreadGroup parentGroup;while ((parentGroup = rootGroup.getParent()) != null) {
    rootGroup = parentGroup;}

现在,打电话给enumerate()反复作用于根组。第二个参数允许递归获取所有线程:

Thread[] threads = new Thread[rootGroup.activeCount()];while (rootGroup.enumerate(threads, true ) == threads.length) {
    threads = new Thread[threads.length * 2];}

注意如何反复调用枚举(),直到数组足够大以包含所有条目。


查看完整回答
反对 回复 2019-06-19
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

是的,看看获取线程列表..那一页上有很多例子。

这是通过编程实现的。如果您只想在Linux上列出一个列表,那么只需使用以下命令:

kill -3 processid

VM将对stdout执行线程转储。


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 1819 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信