Top


定義場所(file name)

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

説明(description)

    /**
     * This method is called by the system to give a Thread
     * a chance to clean up before it actually exits.
     */

名前(function name)

    private void exit() {

本体部(body)

  {- -------------------------------------------
  (1) java.lang.ThreadGroup.threadTerminated() を呼び出して, 
      登録先の ThreadGroup (以下の group) からこのスレッドを除去しておく.
      (ついでに, group フィールドは null にしておく)

      (なお, null かどうかのチェックをしてから呼び出しているが
       基本的に生存中は null ではないはずなので, 
       これは複数のスレッドが同時に java.lang.Thread.exit() を呼び出したときに
       無駄に java.lang.ThreadGroup.threadTerminated() を呼び出さないための措置??? #TODO)
      ---------------------------------------- -}

            if (group != null) {
                group.threadTerminated(this);
                group = null;
            }

  {- -------------------------------------------
  (1) フィールドの値を明示的に消しておく.
      (この理由は bug 4006245 を参照とのこと)
      ---------------------------------------- -}

            /* Aggressively null out all reference fields: see bug 4006245 */
            target = null;
            /* Speed the release of some of these resources */
            threadLocals = null;
            inheritableThreadLocals = null;
            inheritedAccessControlContext = null;
            blocker = null;
            uncaughtExceptionHandler = null;
        }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.