ThreadGroup分析
本文为转载:http://sunboyyyl.blog.163.com/blog/static/2247381201211531712330/
在Java中每一个线程都归属于某个线程组管理的一员,例如在主函数main()主工作流程中产生一个线程,则产生的线程属于main这个线程组管理的一员。简单地说,线程组就是由线程组成的管理线程的类,这个类是java.lang.ThreadGroup类。
可以通过使用如下代码获取此线程所属线程组的名称。
Thread.currentThread().getThreadGroup().getName();
currentThread():取得当前线程。
getThreadGroup():取得当前线程所在的组。
getName():取得组的名称。
定义一个线程组,通过以下代码可以实现。
ThreadGroup group=new ThreadGroup("group");
Thread thread=new Thread(group,"the first thread of group");
ThreadGroup类中的某些方法,可以对线程组中的线程产生作用。例如,setMaxPriority()方法可以设定线程组中的所有线程拥有最大的优先权。
ThreadGroup
线程组表示一个线程的集合。此外,线程组也可以包含其他线程组。线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组。
允许线程访问有关自己的线程组的信息,但是不允许它访问有关其线程组的父线程组或其他任何线程组的信息。
构造方法摘要
ThreadGroup(String name) // 构造一个新线程组。
ThreadGroup(ThreadGroup parent, String name) // 创建一个新线程组。
如:
ThreadGroup g=new ThreadGroup("g1");
Thread t=new Thread(g,new TestThread(1000,"AAA"));
其中的g即线程所属的线程组
使用线程组的好处是可以对这一组的线程进行整体操作。
其中部分的方法
int activeCount()
返回此线程组中活动线程的估计数。
int activeGroupCount()
返回此线程组中活动线程组的估计数。
String getName()
返回此线程组的名称。
ThreadGroup getParent()
返回此线程组的父线程组。
void resume()
已过时。 此方法只用于联合 Thread.suspend 和 ThreadGroup.suspend 时,因为它们所固有的容易导致死锁的特性,所以两者都已废弃。有关详细信息,请参阅 Thread.suspend()。
void setDaemon(boolean daemon)
更改此线程组的后台程序状态。
void setMaxPriority(int pri)
设置线程组的最高优先级。
void stop()
已过时。