Java提供了一种在单个对象中组合多个线程的便捷方法。通过这种方式,通过单个方法调用暂停,恢复或中断线程组。
注意: 现在不推荐使用suspend(),resume()和stop()方法。
Java线程组由java.lang.ThreadGroup类实现。
ThreadGroup表示一组线程。 线程组还可以包括其他线程组。 线程组创建一个树,其中除初始线程组之外的每个线程组都具有父线程。
允许线程访问有关其自己的线程组的信息,但它无法访问有关其线程组的父线程组或任何其他线程组的信息。
ThreadGroup类的构造函数
ThreadGroup类只有两个构造函数。
编号
构造函数
描述
1
ThreadGroup(String name)
创建具有给定名称的线程组。
2
ThreadGroup(ThreadGroup parent, String name)
创建具有给定父组和名称的线程组。
ThreadGroup类的方法
ThreadGroup类中有许多方法,下面给出了ThreadGroup方法的列表。
编号
方法
描述
1
此方法确定当前运行的线程是否具有修改线程组的权限。
2
此方法返回线程组及其子组中活动线程数的估计值。
3
此方法返回线程组及其子组中活动组数量的估计值。
4
此方法会销毁线程组及其所有子组。
5
此方法将线程组及其子组中的每个活动线程复制到指定的数组中。
9
此方法中断线程组中的所有线程。
10
此方法测试线程组是否为守护程序线程组。
13
此方法将有关线程组的信息打印到标准输出。
15
此方法用于挂起线程组中的所有线程。
16
此方法用于恢复使用suspend()方法挂起的线程组中的所有线程。
18
此方法用于停止线程组中的所有线程。
19
此方法返回线程组的字符串表示形式。
下面来一个分组多个线程的代码。
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");
现在所有3个线程都属于一个组。 这里,tg1是线程组名称,MyRunnable是实现Runnable接口的类,“one”,“two”和“three”是线程名称。
现在只能通过一行代码中断所有线程。
Thread.currentThread().getThreadGroup().interrupt();
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();
}
}
执行上面示例代码,得到以下结果:
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]
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。