咱們看看源碼中對與Thread類的部分聲明java
public class Thread implements Runnable { /* Make sure registerNatives is the first thing <clinit> does. */ private static native void registerNatives(); static { registerNatives(); } private volatile String name; ...
如今是否是很清楚了,Thread 類是實現了Runnable接口的。多線程
方法步驟總結:spa
Thread類有一個Thread(Runnable target)構造方法,在Runable接口類中只有一個run()方法。線程
當使用Thread(Runnable target)方法建立線程對象時,須要爲該方法傳遞一個實現 Runnable接口的對象,這樣建立的線程將調用那個實現了Runnable接口類對象中的run()方法做爲其運行代碼,而再也不是調用Thread類中的run方法了。code
方法步驟總結:對象
注意:啓動一個新的線程,不是直接調用Thread子類的對象的run方法,而是調用Thread子類對象的start方法。繼承
start方法是從Thread類中繼承的方法,Thread類對象的start方法將產生一個新的線程,並在該線程上運行該Thread類對象中的run方法。接口
根據面向對象的多態性可知,在該線程上實際運行的是咱們編寫的那個類(Thread的子類)對象中的run方法。get