hotspot/src/share/vm/prims/jvm.cpp
JVM_ENTRY(void, JVM_SetThreadPriority(JNIEnv* env, jobject jthread, jint prio))
{- -------------------------------------------
(1) (トレース出力) (See: JVMWrapper)
---------------------------------------- -}
JVMWrapper("JVM_SetThreadPriority");
{- -------------------------------------------
(1) Threads_lock を取得して, OSThread 等のデータが処理の途中で解放されることがないようにしておく.
---------------------------------------- -}
// Ensure that the C++ Thread and OSThread structures aren't freed before we operate
MutexLocker ml(Threads_lock);
{- -------------------------------------------
(1) java_lang_Thread::set_priority() を呼んで,
対象の java.lang.Thread オブジェクトの priority フィールドに値を記録しておく.
---------------------------------------- -}
oop java_thread = JNIHandles::resolve_non_null(jthread);
java_lang_Thread::set_priority(java_thread, (ThreadPriority)prio);
{- -------------------------------------------
(1) Thread::set_priority() を呼んで, 優先度の設定を行う.
(ただし, 対象のスレッドがまだ開始されていない場合は, この処理は省略する)
---------------------------------------- -}
JavaThread* thr = java_lang_Thread::thread(java_thread);
if (thr != NULL) { // Thread not yet started; priority pushed down when it is
Thread::set_priority(thr, (ThreadPriority)prio);
}
JVM_END
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.