処理対象が自スレッドの場合には, THROW_OOP() マクロで例外を投げるだけ.
処理対象が他スレッドの場合には, VM_ThreadStop で VM Operation を発生させ, そのスレッド内に pending exception として埋め込む (See: VM_ThreadStop).
このメソッドは deprecated.
java.lang.Thread.stop() -> java.lang.Thread.stop(Throwable obj) -> JVM_StopThread() (= java.lang.Thread.stop0()) -> 処理対象のスレッドに応じて, 以下のどれかを呼び出す. * 処理対象がいない場合 (まだ開始していない or もう死んでいる) -> java_lang_Thread::set_stillborn() (まだ開始していない場合) * 処理対象が自分自身の場合 -> THROW_OOP() マクロ * 処理対象が自分以外の場合 -> Thread::send_async_exception() -> VMThread::execute() -> (See: here for details) -> VM_ThreadStop::doit() -> JavaThread::send_thread_stop() -> JavaThread::set_pending_async_exception()
See: here for details
See: here for details
See: here for details
java.lang.Thread.stop0() は JVM_StopThread() で実装されている.
((cite: jdk/src/share/native/java/lang/Thread.c))
static JNINativeMethod methods[] = {
...
{"stop0", "(" OBJ ")V", (void *)&JVM_StopThread},
See: here for details
See: here for details
See: here for details
(#Under Construction) See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.