在一个系统中,如果线程数量很多,而且功能分配比较明确,就可以将相同功能的线程放置在同一个线程组里。

    1. package com.demo.base;
    2. public class ThreadDemo {
    3. public static void main(String[] args) {
    4. // 创建一个线程组对象
    5. ThreadGroup tg = new ThreadGroup("打印线程组");
    6. Thread t1 = new Thread(tg, new MyRunnable(), "T1");
    7. Thread t2 = new Thread(tg, new MyRunnable(), "T2");
    8. t1.start();
    9. t2.start();
    10. // 获得活动线程的总数
    11. int activeCount = tg.activeCount();
    12. System.out.println(tg.getName() + " 有 " + activeCount + " 个活动线程");
    13. // 打印这个线程组中所有的线程信息
    14. tg.list();
    15. }
    16. }
    17. class MyRunnable implements Runnable {
    18. @Override
    19. public void run() {
    20. String name = Thread.currentThread().getName();
    21. System.out.println("线程: " + name + " 开始执行。。。");
    22. for(int i=0; i<10; i++){
    23. System.out.println("线程: " + name + "---" + i);
    24. try {
    25. Thread.sleep(100);
    26. } catch (InterruptedException e) {
    27. e.printStackTrace();
    28. }
    29. }
    30. System.out.println("线程: " + name + " 结束。");
    31. }
    32. }

    注意:
    线程组类中还有一个 stop() 的实例方法,可以用来停止线程组中的所有线程,但与 Thread 对象中的 stop() 方法一样,有同样的问题,不推荐使用。