查看 JVM 中的线程名

Jasonakeke
全栈领域新星创作者
2022-05-28 22:31:10

目录

  • 题目描述
  • 解题思路
  • 代码详解
  • 运行截图

题目描述

题目:查看 JVM 中线程的名称及其所在组的名称

解题思路

创建一个类:Question78

定义3个方法:

  • getRootThreadGroups():获得根线程组
  • getThreads() :获得给定线程组中所有线程名
  • getThreadGroups():获得线程组中所有线程

线程组:表示一个线程的集合。还有线程组是可以包含其他线程组的。

线程组构成一棵树,除了初始化的线程组外,每个线程组都有一个父线程组。

代码详解

package question;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName Question78
 * @Description
 * @Author keke
 * @Time 2022/5/28 22:06
 * @Version 1.0
 */
public class Question78 {

    public static void main(String[] args) {
        for (String threadGroup : getThreadGroups(getRootThreadGroups())) {
            System.out.println(threadGroup);
        }

    }

    private static ThreadGroup getRootThreadGroups(){
        ThreadGroup rootGroup = Thread.currentThread().getThreadGroup();
        while (true){
            if (rootGroup.getParent() != null){
                rootGroup = rootGroup.getParent();
            }else {
                break;
            }
        }
        return rootGroup;
    }

    public static List<String> getThreads(ThreadGroup group){
        List<String> threadList = new ArrayList<>();
        Thread[] threads = new Thread[group.activeCount()];
        int count = group.enumerate(threads, false);
        for (int i = 0; i < count; i++) {
            threadList.add(group.getName() + "线程组:" + threads[i].getName());
        }
        return threadList;
    }

    public static List<String> getThreadGroups(ThreadGroup group){
        List<String> threadList = getThreads(group);
        ThreadGroup[] groups = new ThreadGroup[group.activeCount()];
        for (int i = 0; i < group.enumerate(groups, false); i++) {
            threadList.addAll(getThreads(groups[i]));
        }
        return threadList;
    }
}

运行截图

在这里插入图片描述

...全文
44 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

123,690

社区成员

发帖
与我相关
我的任务
社区描述
越努力越幸运,一个人努力可以走得很快,一群人努力,可以走得很远,准备好一起成为架构师了嘛!
社区管理员
  • 小虚竹
  • 阿莫 夕林
  • java李杨勇
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

【十日集训】十日训练营活动正式开始!和小虚竹一起,打卡学习,从入门到大佬,准备好一起成为JAVA架构师了嘛!!

【添加微信】备注1024,加入小虚竹JAVA微信交流群,一起学习交流进大厂

试试用AI创作助手写篇文章吧