从jdk源码中找到native方法对应的c++源码

以thread类为例

当我们查看thread的start方法时,发现其关键执行方法为start0

跳转到start0方法,发现其是一个native方法,并没有实现代码

native方法就是指向的c++源码,那么怎么找呢,接下来先找到thread类的最上面的地方,registerNatives方法就是注册native方法的地方

从openJdk中搜索Thread,找到对应的Thread.c文件

打开Thread.c文件,会看到Thread类下的所有Native方法都在这里了

白色部分的类型定义在上方

这里现在还是没有源码,需要打开jvm.cpp文件,搜索上面的方法即可

创建一个原生线程后,会将线程状态置为initialized,然后一直循环,直到线程状态不是initialized为止,然后执行run方法。

然后此时最后执行的就是start方法,会修改线程状态为runable,此时就可以执行c++层面的run方法,然后回调java的run方法。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章