java.lang.Thread.join() は全て Java レベルのコードで実装されている.
処理としては, join 対象の Thread オブジェクトに対して java.lang.Object.wait() で待つだけ
java.lang.Object.wait() したスレッドを起こす処理は, JavaThread::exit() の処理における ensure_join() 内で行われる (See: here for details).
java.lang.Thread.join()
-> java.lang.Thread.join(long millis)
-> java.lang.Object.wait()
(join 対象の Thread オブジェクトに対して java.lang.Object.wait() し, 終了するまで待つ.
timeup 時間が指定されている場合は, 最大でその時間だけ待つ.
スレッドが終了すると notify されるので wait が解ける.
(See: here for details))
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.