在一个系统中,如果线程数量很多,而且功能分配比较明确,就可以将相同功能的线程放置在同一个线程组里。
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 {@Overridepublic 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() 方法一样,有同样的问题,不推荐使用。
