Java高并发编程学习--13. 线程的ThreadGroup的复制

博客主要介绍了ThreadGroup的enumerate方法,该方法有两个重载形式,可将ThreadGroup的所有active线程复制到Thread数组。当recurse为true时,会递归复制子ThreadGroup的active线程;为false则仅复制当前ThreadGroup的active线程,还给出了例子和结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ThreadGroup的enumerate

  • public int enumerate(Thread[] list)
  • public int enumerate(Thread[] list, boolean recurse)
  • 将ThreadGroup所有的active线程全部复制到Thread数组,recurse为true时,将所有子ThreadGroup的active线程递归复制到Thea的数组中;为false仅仅复制当前ThreadGroup的activex线程

二、例子

package p106_thread_group;

import java.util.concurrent.TimeUnit;

/**
 * @ClassName ThreadGroupEnumerateThreads
 * @Description TODO
 * enumerate
 * public int enumerate(Thread[] list)
 * public int enumerate(Thread[] list, boolean recurse)
 * 将ThreadGroup所有的active线程全部复制到Thread数组,recurse为true时,将所有子
 * ThreadGroup的active线程递归复制到Thea的数组中;为false仅仅复制当前ThreadGroup
 * 的activex线程
 * 1. enumerate方法获取的线程仅仅是一个预估值,不保证百分之百当前group的活跃线程,
 * 如group中线程结束生命周期或者新的线程加入,会导致数据不准确。
 * 2.enumerate返回值相对list的长度更准确。
 * @Author Cays
 * @Date 2019/5/4 8:10
 * @Version 1.0
 **/
public class ThreadGroupEnumerateThreads {
    public static void main(String[] args) throws InterruptedException {
        //创建一个ThreadGroup
        ThreadGroup myGroup = new ThreadGroup("MyGroup");
        //创建线程传入thread group
        Thread thread = new Thread(myGroup,()->{
            while (true){
                try {
                    TimeUnit.SECONDS.sleep(1);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        },"MyThread");
        thread.start();
        TimeUnit.MILLISECONDS.sleep(2);
        ThreadGroup mainGroup = Thread.currentThread().getThreadGroup();
        Thread[] list = new Thread[mainGroup.activeCount()];
        //将main的ThreadGroup以及子ThreadGroup的active的Thread复制到list
        int recurseSize = mainGroup.enumerate(list);
        System.out.println(recurseSize);
        //将main的ThreadGroup的active的Thread复制到list
        recurseSize = mainGroup.enumerate(list,false);
        System.out.println(recurseSize);
    }
}

三、结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值