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() 
已過時。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM