在一个系统中,如果线程数量很多,而且功能分配比较明确,就可以将相同功能的线程放置在同一个线程组里。
package com.demo.base;
public class ThreadDemo {
public static void main(String[] args) {
// 创建一个线程组对象
ThreadGroup tg = new ThreadGroup("打印线程组");
Thread t1 = new Thread(tg, new MyRunnable(), "T1");
Thread t2 = new Thread(tg, new MyRunnable(), "T2");
t1.start();
t2.start();
// 获得活动线程的总数
int activeCount = tg.activeCount();
System.out.println(tg.getName() + " 有 " + activeCount + " 个活动线程");
// 打印这个线程组中所有的线程信息
tg.list();
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
String name = Thread.currentThread().getName();
System.out.println("线程: " + name + " 开始执行。。。");
for(int i=0; i<10; i++){
System.out.println("线程: " + name + "---" + i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("线程: " + name + " 结束。");
}
}
注意:
线程组类中还有一个 stop() 的实例方法,可以用来停止线程组中的所有线程,但与 Thread 对象中的 stop() 方法一样,有同样的问题,不推荐使用。