Java高并发学习(三)
分门别类的管理:线程组
在一个系统中,如果线程数量很多,而且功能分配比较明确,就可以将功能相同的线程放置在一个线程组里。
构造方法:
ThreadGroup(String name):以指定线程组名字来创建新线程组
ThreadGroup(ThreadGroup parent,String name):以指定的名字、指定的父线程组来创建一个新线程组。
常用操作方法:
· int activeCount():获取线程组中活动线程的数量
· interrupt():中断线程组中所有线程
扫描二维码关注公众号,回复:
2400851 查看本文章
· isDaemon():是否为后台线程组
· setDaemon(boolean daemon):设置为后台线程组
· setMaxPriority(int pri):设置线程组的最高优先级
线程组的使用非常简单,如下:
public class fist{
public static class MyThread extends Thread{
//提线程名的构造器
public MyThread(String name){
super(name);
}
//提供指线程名,线程组的构造器
public MyThread(ThreadGroup group,String name){
super(group,name);
}
@Override
public void run(){
System.out.println(getName());
}
}
public static void main(String args[]) throws InterruptedException {
//创建一个线程组
ThreadGroup tGroup = new ThreadGroup("MyThread_Group");
MyThread t1 = new MyThread(tGroup,"t1");
MyThread t2 = new MyThread(tGroup,"t2");
t1.start();
t2.start();
System.out.println(tGroup.activeCount());
//list()方法打印线程组中的线程信息
tGroup.list();
}
}
线程都是在创造的同时加入线程组中,然后才start。上述代码展示了线程组的两个重要功能,activeCount()可以获得活动线程的总数,但由于线程是动态的,所以这个值是一个预估值,list()可以打印这个线程组中所有的线程信息,对调试有一定帮助。