首页 > 技术文章 > java thread start到run:C++源码分析

yszzu 2018-12-26 19:23 原文

 

转:https://hunterzhao.io/post/2018/06/11/hotspot-explore-inside-java-thread-run/

 

整体流程

java new Thread()时,本地线程并没有创建,是在start()时才开始创建本地线程

 

 

 

 

 

 

 

 

 os线程创建之后, 处于wait状态

 

 

Thread::start(native_thread)时, 会调用os线程对象的notify,  上图中会跳出while循环,触发执行run()方法。之后会记录线程的启动状态

 

由此可见start()调用run()方法是jvm C++代码自动完成的, 只看java代码是看不出来这个过程的. java Thread.class代码中只有一个start0() native方法

 

 

 

 源码查看过程,有时找不到方法声明的地方  可以使用xxx::yyyy搜索一下。C++也有继承

 

推荐阅读