分析start()的源码:
调用start0()方法
是一个native方法
进入http://hg.openjdk.java.net/jdk8u源码页查看其native方法的源码
进入share目录,找到Thread.c
发现其调用了JVM_StartThread方法
通过查看其顶部引用,定位jvm.h
进入jvm.h进行查看
在JVM_StartThread中,新建了一个JavaThread,这个方法还调用了thread_entry方法
找到thread_entry方法
发现在这个方法中,执行了线程中的run()方法
总结之后就是:在调用start方法时,会调用JVM的JVM_StartThread,去创建一个新的子线程,再通过thread_entry方法去调用run()方法
回答:
调用start()方法会创建一个新的子线程并且启动
run()方法只是THread的一个普通方法的调用