Java Thread:揭开Run方法被调用的真正面纱(2)

这里JVM_ENTRY是一个宏,用来定义JVM_StartThread 函数,可以看到函数内创建了真正的平台相关的本地线程,其线程函数是 thread_entry,如下:

static void thread_entry(JavaThread* thread, TRAPS) { HandleMark hm(THREAD); Handle obj(THREAD, thread->threadObj()); JavaValue result(T_VOID); JavaCalls::call_virtual(&result,obj, KlassHandle(THREAD,SystemDictionary::Thread_klass()), vmSymbolHandles::run_method_name(), //LOOK! 看这里 vmSymbolHandles::void_method_signature(),THREAD); }

可以看到调用了 vmSymbolHandles::run_method_name 方法,而run_method_name是在 vmSymbols.hpp 用宏定义的:

class vmSymbolHandles: AllStatic { ... template(run_method_name,"run") //LOOK!!! 这里决定了调用的方法名称是 “run”! ... }

Java线程创建调用关系

Java Thread:揭开Run方法被调用的真正面纱

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/600f2c31cec6cc61a47f8addf55c9138.html