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

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

相关文章
|
3月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
144 0
|
2月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
199 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
存储 运维 Kubernetes
Java启动参数JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError"
本文介绍了Java虚拟机(JVM)常用启动参数配置,包括设置初始堆内存(-Xms512m)、最大堆内存(-Xmx1024m)及内存溢出时生成堆转储文件(-XX:+HeapDumpOnOutOfMemoryError),用于性能调优与故障排查。
321 0
|
4月前
|
Java 数据挖掘 调度
Java 多线程创建零基础入门新手指南:从零开始全面学习多线程创建方法
本文从零基础角度出发,深入浅出地讲解Java多线程的创建方式。内容涵盖继承`Thread`类、实现`Runnable`接口、使用`Callable`和`Future`接口以及线程池的创建与管理等核心知识点。通过代码示例与应用场景分析,帮助读者理解每种方式的特点及适用场景,理论结合实践,轻松掌握Java多线程编程 essentials。
250 5
|
4月前
|
监控 搜索推荐 Java
Java 多线程最新实操技术与应用场景全解析:从基础到进阶
本文深入探讨了Java多线程的现代并发编程技术,涵盖Java 8+新特性,如CompletableFuture异步处理、Stream并行流操作,以及Reactive编程中的Reactor框架。通过具体代码示例,讲解了异步任务组合、并行流优化及响应式编程的核心概念(Flux与Mono)。同时对比了同步、CompletableFuture和Reactor三种实现方式的性能,并总结了最佳实践,帮助开发者构建高效、扩展性强的应用。资源地址:[点击下载](https://pan.quark.cn/s/14fcf913bae6)。
266 3
|
5月前
|
Arthas 监控 Java
Arthas thread(查看当前JVM的线程堆栈信息)
Arthas thread(查看当前JVM的线程堆栈信息)
771 10
|
5月前
|
算法 Java 调度
Java多线程基础
本文主要讲解多线程相关知识,分为两部分。第一部分涵盖多线程概念(并发与并行、进程与线程)、Java程序运行原理(JVM启动多线程特性)、实现多线程的两种方式(继承Thread类与实现Runnable接口)及其区别。第二部分涉及线程同步(同步锁的应用场景与代码示例)及线程间通信(wait()与notify()方法的使用)。通过多个Demo代码实例,深入浅出地解析多线程的核心知识点,帮助读者掌握其实现与应用技巧。
103 1
|
5月前
|
Java
java 多线程异常处理
本文介绍了Java中ThreadGroup的异常处理机制,重点讲解UncaughtExceptionHandler的使用。通过示例代码展示了当线程的run()方法抛出未捕获异常时,JVM如何依次查找并调用线程的异常处理器、线程组的uncaughtException方法或默认异常处理器。文章还提供了具体代码和输出结果,帮助理解不同处理器的优先级与执行逻辑。
131 1
|
5月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
470 55
|
6月前
|
Arthas 监控 Java
Arthas memory(查看 JVM 内存信息)
Arthas memory(查看 JVM 内存信息)
446 6