Java 线程组
Java提供了一种将多个线程组合到单个对象中的便捷方法。这样,我们可以通过单个方法调用来暂停,恢复或中断线程组。
注意: 现在不建议使用suspend(),resume()和stop()方法。
Java线程组由
java.lang.ThreadGroup 类实现。
ThreadGroup表示一组线程。一个线程组也可以包括另一个线程组。线程组创建一棵树,其中除初始线程组外的每个线程组都有一个父级。
允许线程访问有关其自己的线程组的信息,但不能访问有关其线程组的父线程组或任何其他线程组的信息。
ThreadGroup类的构造函数
ThreadGroup类的构造函数只有两个。
构造函数 |
说明 |
ThreadGroup(字符串名称) |
创建具有给定名称的线程组。 |
ThreadGroup(ThreadGroup父级,字符串名称) |
使用给定的父组和名称创建线程组。 |
ThreadGroup类的方法
ThreadGroup类中有很多方法。下面列出了ThreadGroup方法。
让我们看一下对多个线程进行分组的代码。
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接口的类,而"一个","两个"和"三个"是线程名称。
现在我们可以一次中断所有线程。仅一行代码。
Thread.currentThread().getThreadGroup().interrupt();
线程组示例
文件: ThreadGroupDemo.java
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();
}
}
输出:
one
two
three
Thread Group Name: Parent ThreadGroup
java.lang.ThreadGroup[name=Parent ThreadGroup,maxpri=10]
Thread[one,5,Parent ThreadGroup]
Thread[two,5,Parent ThreadGroup]
Thread[three,5,Parent ThreadGroup]