Up Top

java.lang.Thread オブジェクト (= JavaThread オブジェクト) を生成する側の処理 (2) : java.lang.Thread.start() の処理


概要(Summary)

(#Under Construction)

処理の流れ (概要)(Execution Flows : Summary)

java.lang.Thread.start()
-> java.lang.ThreadGroup.add()
-> java.lang.ThreadGroup.start0()
   -> JVM_StartThread()
      -> (1) 新しい JavaThread オブジェクトを生成する
             -> JavaThread::JavaThread()   (<= なお, エントリポイントとしては thread_entry() 関数が指定されている)
                -> Thread::Thread()
                -> JavaThread::initialize()
                -> JavaThread::set_entry_point()
                -> os::create_thread()
                   -> (See: here for details)

         (1) 生成した JavaThread オブジェクトを初期化する
             -> JavaThread::prepare()
                -> JavaThread::set_thread()
                -> java_lang_Thread::set_thread()
                -> Thread::set_priority()
                -> Threads::add()

         (1) 生成した JavaThread の実行を開始させる.
             -> Thread::start()
                -> java_lang_Thread::set_thread_status()
                -> os::start_thread()
                   -> (See: here for details)

(なお, java.lang.ThreadGroup.start0() での生成に失敗した場合は以下の関数が呼ばれる)
-> java.lang.ThreadGroup.threadStartFailed()
   -> java.lang.ThreadGroup.remove()

処理の流れ (詳細)(Execution Flows : Details)

java.lang.Thread.start()

See: here for details

java.lang.ThreadGroup.add()

See: here for details

java.lang.ThreadGroup.threadStartFailed()

See: here for details

java.lang.ThreadGroup.remove()

See: here for details

JVM_StartThread()

See: here for details

java_lang_Thread::stackSize()

(#Under Construction)

JavaThread::JavaThread()

See: here for details

Thread::Thread()

See: here for details

JavaThread::initialize()

See: here for details

ThreadProfiler::engage()

See: here for details

ThreadSafepointState::create()

See: here for details

JavaThread::pd_initialize() (Linux x86 の場合)

See: here for details

JavaThread::pd_initialize() (Solaris sparc の場合)

See: here for details

JavaThread::pd_initialize() (Windows x86 の場合)

See: here for details

JavaThread::set_entry_point()

See: here for details

JavaThread::prepare()

See: here for details

JavaThread::set_threadObj()

See: here for details

JavaThread::threadObj()

See: here for details

java_lang_Thread::set_thread()

See: here for details

java_lang_Thread::priority()

(#Under Construction)

Thread::set_priority()

See: here for details

Threads::add()

See: here for details

JavaThread::initialize_queues() (#ifndef SERIALGC の場合)

See: here for details

JavaThread::initialize_queues() (#ifdef SERIALGC の場合)

See: here for details

ThreadService::add_thread()

See: here for details

Thread::start()

See: here for details

java_lang_Thread::set_thread_status()

See: here for details


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