interupt一個thread group會導致該group中所有的active線程都被interrupt,也就是說該group中每一個線程的interrupt標識都被設置了,下面是ThreadGroup的interrupt方法的源碼:
public final void interrupt(){
int ngroupsSnapshot;
ThreadGroup[]groupsSnapshot;
synchronized(this){
checkAccess();
for(inti=0;i<nthreads;i++){
threads[i].interrupt();
ngroupsSnapshot=ngroups;
if(groups!=null){
groupsSnapshot=Arrays.copyof(groups,ngroup)
} else{
groupsSnapshot=nul1;
}
for(inti=0;i< ngroupssnapshot;i++){
groupsSnapshot[i]. interrupt();
}
}
以上就是筆者整理的Java中,ThreadGroup的interrupt方法源碼了。分析上述源碼,我們可以看出在interupt內部會執行所有thread的interrupt方法,並且會遞歸獲取子group,然後執行它們各自的interrupt方法,group中的active thread都將被interrupt。