首页 > 编程语言 >Java线程组

Java线程组

时间:2024-05-27 09:05:27浏览次数:24  
标签:tg1 Java Thread ThreadGroup 线程 new 方法

Java提供了一种在单个对象中组合多个线程的便捷方法。通过这种方式,通过单个方法调用暂停,恢复或中断线程组。

注意: 现在不推荐使用suspend()resume()stop()方法。

Java线程组由java.lang.ThreadGroup类实现。

ThreadGroup表示一组线程。 线程组还可以包括其他线程组。 线程组创建一个树,其中除初始线程组之外的每个线程组都具有父线程。

允许线程访问有关其自己的线程组的信息,但它无法访问有关其线程组的父线程组或任何其他线程组的信息。

ThreadGroup类的构造函数

ThreadGroup类只有两个构造函数。

编号构造函数描述
1ThreadGroup(String name)创建具有给定名称的线程组。
2ThreadGroup(ThreadGroup parent, String name)创建具有给定父组和名称的线程组。

ThreadGroup类的方法

ThreadGroup类中有许多方法,下面给出了ThreadGroup方法的列表。

编号方法描述
1void checkAccess()此方法确定当前运行的线程是否具有修改线程组的权限。
2int activeCount()此方法返回线程组及其子组中活动线程数的估计值。
3int activeGroupCount()此方法返回线程组及其子组中活动组数量的估计值。
4void destroy()此方法会销毁线程组及其所有子组。
5int enumerate(Thread[] list)此方法将线程组及其子组中的每个活动线程复制到指定的数组中。
6int getMaxPriority()此方法返回线程组的最大优先级。
7String getName()此方法返回线程组的名称。
8ThreadGroup getParent()此方法返回线程组的父级。
9void interrupt()此方法中断线程组中的所有线程。
10boolean isDaemon()此方法测试线程组是否为守护程序线程组。
11void setDaemon(boolean daemon)此方法更改线程组的守护程序状态。
12boolean isDestroyed()此方法测试此线程组是否已被销毁。
13void list()此方法将有关线程组的信息打印到标准输出。
14boolean parentOf(ThreadGroup g)此方法测试线程组是线程组参数还是其祖先线程组之一。
15void suspend()此方法用于挂起线程组中的所有线程。
16void resume()此方法用于恢复使用suspend()方法挂起的线程组中的所有线程。
17void setMaxPriority(int pri)此方法设置组的最大优先级。
18void stop()此方法用于停止线程组中的所有线程。
19String toString()此方法返回线程组的字符串表示形式。

下面来一个分组多个线程的代码。

ThreadGroup tg1 = new ThreadGroup("Group A");
Thread t1 = new Thread(tg1,new MyRunnable(),"one");
Thread t2 = new Thread(tg1,new MyRunnable(),"two");
Thread t3 = new Thread(tg1,new MyRunnable(),"three");

Java

现在所有3个线程都属于一个组。 这里,tg1是线程组名称,MyRunnable是实现Runnable接口的类,“one”,“two”和“three”是线程名称。

现在只能通过一行代码中断所有线程。

Thread.currentThread().getThreadGroup().interrupt();

Java

ThreadGroup示例

示例: ThreadGroupDemo.java

package com.yiibai;

public class ThreadGroupDemo implements Runnable {
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        ThreadGroupDemo runnable = new ThreadGroupDemo();
        ThreadGroup tg1 = new ThreadGroup("Parent ThreadGroup");

        Thread t1 = new Thread(tg1, runnable, "one");
        t1.start();
        Thread t2 = new Thread(tg1, runnable, "two");
        t2.start();
        Thread t3 = new Thread(tg1, runnable, "three");
        t3.start();

        System.out.println("Thread Group Name: " + tg1.getName());
        tg1.list();

    }
}

Java

执行上面示例代码,得到以下结果:

Thread Group Name: Parent ThreadGroup
three
two
one
java.lang.ThreadGroup[name=Parent ThreadGroup,maxpri=10]
    Thread[one,5,Parent ThreadGroup]
    Thread[two,5,Parent ThreadGroup]
    Thread[three,5,Parent ThreadGroup]

标签:tg1,Java,Thread,ThreadGroup,线程,new,方法
From: https://blog.csdn.net/unbelievevc/article/details/139225767

相关文章

  • Java关闭挂钩(shutdown hook)
    当JVM正常或突然关闭时,关闭挂钩可用于执行清理资源或保存状态。执行干净资源意味着关闭日志文件,发送一些警报或其他内容。因此,如果要在JVM关闭之前执行某些代码,请使用关闭挂钩(shutdownhook)。JVM什么时候关闭?JVM在以下情况下关闭:用户在命令提示符下按ctrl+c调用Syste......
  • Java 线程池优化
    1.Java线程池优化1.1.核心线程数1.2.任务队列1.2.1.LinkedBlockingQueue1.2.2.ArrayBlockingQueue1.2.3.SynchronousQueue1.2.4.总结1.3.最大线程数1.4.线程存活时间1.5.拒绝策略1.5.1.AbortPolicy(默认策略)1.5.2.CallerRunsPolicy1.5.3.DiscardPo......
  • java可变参数
     展示了如何使用可变参数(varargs)来处理不同数量的参数输入/***@author:javaRao*@date:Createdin2023-06-3015:41*@description:*/publicclassMod7{publicstaticvoidmain(String[]args){//调用ar方法,传递一个参数ar(1);......
  • Java中生成二维码转为base64存入MySQL数据库中
    1.引入架包<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.google.zxing</groupId>......
  • 零基础学Java第二十三天之网络编程
    网络编程1.网络编程实现多台计算机之间实现数据的共享和传递,网络应用程序主要组成为:网络编程+IO流+多线程2.网络编程三要素网络通讯的模型:请求-响应,客户端-服务端三要素:IP地址,端口,协议(数据传输的规则)2.1.IP地址IP地址:网络中计算机的唯一标识(IP地址是一个32位的二......
  • 零基础学Java第二十三天之网络编程Ⅱ
    1.InetAddress类用来表示主机的信息练习:C:\Windows\system32\drivers\etc\hosts一个主机可以放多个个人网站www.baidu.com/14.215.177.37www.baidu.com/14.215.177.38www.taobao.com/183.61.241.252www.taobao.com/121.14.89.2532.Socket3.TCP编程API:Socket,S......
  • 分析JAVA打印流的自动刷新
    参考:https://blog.csdn.net/xshsjl/article/details/77076235参考:https://blog.csdn.net/weixin_43369921/article/details/111397253今天遇到了一个奇怪的事情,使用打印流,有一个自动刷新的参数,但设不设置结果貌似没啥影响,下面来研究研究publicPrintStream(OutputStreamout,......
  • (读后分享)移动Web前端高效开发实战:HTML 5 + CSS 3 + JavaScript + Webpack + React Nat
    链接:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoHTML5新特性与应用:介绍HTML5的新特性,包括语义化标签、本地存储、设备兼容、连接特性等,并讲解如何在移动Web前端开发中充分利用这些特性提升用户体验。CSS3样式与动画设计:详细讲解CSS3的样式设计和动画效果,包......
  • Linux线程:线程的概念及定义
    目录一、线程的概念1.1什么是线程 1.2Linux中线程和进程的关系1.3页表的结构及实现二、线程的创建及使用2.1pthread_t一、线程的概念1.1什么是线程1、在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。2、一切......
  • 【Java笔记】第8章:面向对象的三大特性(封装、继承、多态)
    前言1.三大特性概述2.封装3.继承4.多态结语#include<GUIQU.h>intmain{上期回顾:【Java笔记】第7章:面向对象个人主页:C_GUIQU归属专栏:【Java学习】return一键三连;}前言各位小伙伴大家好!上期小编给大家讲解了Java中的面向对象,接下来讲讲Java中面向......