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.