jdk/src/share/classes/java/lang/ThreadGroup.java
/**
* Removes the specified Thread from this group. Invoking this method
* on a thread group that has been destroyed has no effect.
*
* @param t
* the Thread to be removed
*/
private void remove(Thread t) {
{- -------------------------------------------
(1) 引数で指定された Thread オブジェクトを threads フィールドから除去する.
(配列の途中に空きを作らないよう,
その要素より後ろのものを一つずつ前にずらし,
最後の要素は null にしている)
(ついでに, nthreads フィールドのデクリメントも行っている)
(ただし, この ThreadGroup が既に破棄されている場合は, 何もしない)
---------------------------------------- -}
synchronized (this) {
if (destroyed) {
return;
}
for (int i = 0 ; i < nthreads ; i++) {
if (threads[i] == t) {
System.arraycopy(threads, i + 1, threads, i, --nthreads - i);
// Zap dangling reference to the dead thread so that
// the garbage collector will collect it.
threads[nthreads] = null;
break;
}
}
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.