前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA多线程的知识点2(查看jvm的线程名)

JAVA多线程的知识点2(查看jvm的线程名)

作者头像
王同学要努力
发布2022-12-20 17:12:42
3400
发布2022-12-20 17:12:42
举报

题目💫:

查看JVM中线程的名称及其所在组的名称🤎

解题思路💫:

小王这里定义三个方法:

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

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

线程组构成一棵树,除了舒适化的线程组之外,每个线程都有一个父线程组 

 代码附上💟:

代码语言:javascript
复制
package cn.xiaoxuzhu.daily;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 小王同学
 * @version 1.0
 * @Description:
 *查看JVM中线程的名称及其所在组的名称🤎
 *
 * 思路:
 * getRootThreadGroups();获得线程组
 * getThreads();获得给定线程组中所有线程名
 * getThreadGroups();获得线程组中所有线程
 *
 */


public class ThreadList {
    private  static ThreadGroup getRootThreadGroups(){ //获得根线程组
        ThreadGroup rootGroup=Thread.currentThread().getThreadGroup();//获得当前线程组
        while(true){
            if(rootGroup.getParent()!=null){ //如果getParent()返回值非空则不是根线程组
                rootGroup=rootGroup.getParent(); //获得父线程组


            }else {
                break; //如果达到根线程则退出循环
            }
        }
        return  rootGroup;


    }
    public static List<String >getThreads(ThreadGroup group){ //获得给定线程组中所以线程名
        List<String >threadList=new ArrayList<String>(); //创建保存线程名的列表
        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.activeGroupCount()]; //创建线程组数组
        int count=group.enumerate(groups,false); //复制子线程组到线程组数据
        for(int i=0;i<count;i++){ //遍历所有子线程组
            threadList.addAll(getThreads(groups[i]));

        }
        return  threadList; //返回所有子线程名

    }

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




    }

以上就是小王同学带来的多线程的相关知识

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目💫:
    • 解题思路💫:
    •  代码附上💟:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档