java有兩種方式實現(xiàn)多線程。
第一種——繼承Thread類,并重寫run方法
步驟:
實例:
public class MyThread extends Thread() { @Override public void run() { // 多線程代碼 } // 其他代碼}
Thread t = new MyThread();t.start();
第二種——實現(xiàn)Runnable接口,用該類的對象構(gòu)造Thread類
步驟:
實例:
public class MyClass implements Runnable() { public void run() { // 多線程代碼 } // 其他代碼}
MyClass m = new MyClass();Thread t = new Thread(m);t.start();
start方法的功能
為什么可以有以上兩種方式實現(xiàn)多線程?
對于第一種方式很容易理解。由于重寫了Thread類的run方法,調(diào)用start方法啟動線程后,jvm將調(diào)用子類重寫的run方法;
對于第二種方式,調(diào)用start方法啟動線程后,jvm將調(diào)用Thread類的run方法,其代碼如下:
public void run() { if (target != null) { target.run(); }?}
其中target為Thread類的成員變量,類型為Runnable。在用Runnable對象構(gòu)造Thread時,會使target引用該接口對象,所以執(zhí)行target.run()時,實際上執(zhí)行了接口對象的run方法。
新聞熱點
疑難解答