代码如下:
public class ThreadTest {
public static void main(String args[]) {
MyThread t = new MyThread();
t.run();
t.start();
System.out.println("A");
}
}
class MyThread extends Thread {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
System.out.println("B");
}
}
以上的代码的结果是:
B
A
B
如果把t.run();注释掉为什么是
A
B
知道的解释下执行过程,谢谢,我是新手,有点懵了。 作者: (0.0)’ 时间: 2013-9-19 01:28
这很好理解,
1、因为run方法MyThread 是复写Thread类的方法,而你在调用这个方法时,和普通方法调用一样,没区别。所以不会执行 Thread.sleep(3000);直接执行到 B 的输出语句。
2、而调用start方法的作用就是,启动线程,并运行run方法。所以主线程中的 A 被输出。
3、而开启的线程还在被睡眠。等他醒来就执行了B。