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

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

题目💫:

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


解题思路💫:

小王这里定义三个方法:


getRootThreadGroups();获得线程组

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

getThreadGroups();获得线程组中所有线程

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


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


代码附上💟:

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);
        }
    }
    }

8a3cf8f7176f4856b61b5541047a0977.png

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

相关文章
|
7天前
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)
|
1天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。
|
3天前
|
Java
深入理解Java中的多线程编程
本文将探讨Java多线程编程的核心概念和技术,包括线程的创建与管理、同步机制以及并发工具类的应用。我们将通过实例分析,帮助读者更好地理解和应用Java多线程编程,提高程序的性能和响应能力。
15 4
|
2天前
|
安全 Java 调度
Java 并发编程中的线程安全和性能优化
本文将深入探讨Java并发编程中的关键概念,包括线程安全、同步机制以及性能优化。我们将从基础入手,逐步解析高级技术,并通过实例展示如何在实际开发中应用这些知识。阅读完本文后,读者将对如何在多线程环境中编写高效且安全的Java代码有一个全面的了解。
|
2月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
45 0
|
4月前
|
Java 程序员
Java this关键字详解(3种用法),Java程序员面试必备的知识点
Java this关键字详解(3种用法),Java程序员面试必备的知识点
|
4月前
|
消息中间件 NoSQL 网络协议
Java面试知识点复习​_kaic
Java面试知识点复习​_kaic
|
2月前
|
存储 并行计算 安全
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
51 0
|
2月前
|
Java
Java面试题:Java内存模型与并发编程知识点,解释Java中“happens-before”的关系,分析Java中的内存一致性效应(Memory Consistency Effects)及其重要性
Java面试题:Java内存模型与并发编程知识点,解释Java中“happens-before”的关系,分析Java中的内存一致性效应(Memory Consistency Effects)及其重要性
21 0