從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方法。

 

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