run():不管是通過實現Runnable接口還是繼承Thread類(其實Thread中的run方法也是調用了Runnable接口的run方法),調用run()方法僅僅是相當於調用了一個方法,沒有啓用新的線程。
start():會啓動一個新線程,運行重寫的run()代碼。
例子:
public class MyThread {
public static void main(String[] args) {
SThread sThread = new SThread();
sThread.run();
sThread.start();
S2Thread s2Thread = new S2Thread();
s2Thread.run();
}
}
class SThread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " run method run() by Class Thread");
}
}
class S2Thread implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " run method run() by Interface Runnable");
}
}
結果:
main run method run() by Class Thread
Thread-0 run method run() by Class Thread
main run method run() by Interface Runnable
參考文章:線程中run()和start()的區別