分析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的一個普通方法的調用