Top


定義場所(file name)

jdk/src/share/classes/java/lang/ThreadGroup.java

説明(description)

    /**
     * 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
     */

名前(function name)

    private void remove(Thread t) {

本体部(body)

  {- -------------------------------------------
  (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.