hotspot/src/share/vm/runtime/thread.hpp
void check_and_wait_while_suspended() {
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert(JavaThread::current() == this, "sanity check");
{- -------------------------------------------
(1) JavaThread::handle_special_suspend_equivalent_condition() が false を返すまで
(= suspend 状態ではない状態になるまで),
JavaThread::java_suspend_self() による待機を繰り返す.
---------------------------------------- -}
bool do_self_suspend;
do {
// were we externally suspended while we were waiting?
do_self_suspend = handle_special_suspend_equivalent_condition();
if (do_self_suspend) {
// don't surprise the thread that suspended us by returning
java_suspend_self();
set_suspend_equivalent();
}
} while (do_self_suspend);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.