処理対象が自スレッドの場合には, 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.