1.4.线程基础_线程组

来源:互联网 发布:linux cat 查看日志 编辑:程序博客网 时间:2024/05/20 13:36

线程组

当线程变多后就带来了管理问题,JAVA平台提供了线程组进行线程的管理。这运行我们把一个线程组内的所有线程当成一个单一的单元。比如要中断线程组内的所有线程,只需要中断线程组即可。假设我们要中断10个线程,只需要把10个线程用一个线程组管理,然后中断线程组就可。实例代码如下:
public class ThreadGroupDemo {    public static void main(String[] args){        ThreadGroup tg = new ThreadGroup("DemoGroup");        System.out.print("main:创建并启动线程");        for(int i=0; i<10; i++){            Thread t = new Thread(tg, new InterruptableSleepThread());            t.start();        }        try {            System.out.print("main:sleep 0.5s");            Thread.sleep(500);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.print("main:中断线程组");        tg.interrupt();        System.out.print("main:退出");    }}

运行日志:
main:创建并启动线程Thread-0:0Thread-3:0Thread-1:0Thread-2:0Thread-4:0main:sleep 0.5sThread-5:0Thread-6:0Thread-8:0Thread-9:0Thread-7:0Thread-0:1Thread-3:1Thread-4:1Thread-2:1Thread-1:1Thread-8:1Thread-5:1Thread-7:1Thread-9:1Thread-6:1main:中断线程组main:退出Thread-3:线程被中断。Thread-3:取得中断信号状态:falseThread-3:线程退出。Thread-2:线程被中断。Thread-2:取得中断信号状态:falseThread-1:线程被中断。Thread-4:线程被中断。Thread-5:线程被中断。Thread-5:取得中断信号状态:falseThread-5:线程退出。Thread-4:取得中断信号状态:falseThread-4:线程退出。Thread-7:线程被中断。Thread-6:线程被中断。Thread-6:取得中断信号状态:falseThread-0:线程被中断。Thread-0:取得中断信号状态:falseThread-0:线程退出。Thread-6:线程退出。Thread-9:线程被中断。Thread-7:取得中断信号状态:falseThread-7:线程退出。Thread-1:取得中断信号状态:falseThread-1:线程退出。Thread-2:线程退出。Thread-8:线程被中断。Thread-8:取得中断信号状态:falseThread-8:线程退出。Thread-9:取得中断信号状态:falseThread-9:线程退出。

线程组的自包容

线程组是一个树形结构,可以包含子线程组,在此基础上我们可以设计出非常灵活强大的线程管理功能。
0 0