黑马程序员技术交流社区

标题: 多线程启动问题 [打印本页]

作者: 于世德    时间: 2013-7-31 15:49
标题: 多线程启动问题
  1. public class ThreadTest {
  2. public static void main(String args[]) {
  3. MyThread t = new MyThread();
  4. t.run();
  5. t.start();
  6. System.out.println("A");
  7. }
  8. }

  9. class MyThread extends Thread {
  10. public void run() {
  11. try {
  12. Thread.sleep(3000);
  13. } catch (InterruptedException e) {
  14. }
  15. System.out.println("B");
  16. }
  17. }
复制代码
这段代码的输出为什么是BAB?
作者: a767175432    时间: 2013-7-31 17:02
首先你在main()方法用的是 t.run();这不是开启线程的方法,只是执行了线程类的run方法 所以执行了run方法一次 输出B 接着start方法开启了线程,子线程遇到sleep休眠三秒,主线程执行所以输出A 接着子线程恢复了获取执行权输出了B
作者: 张俊生    时间: 2013-7-31 18:01
a767175432 发表于 2013-7-31 17:02
首先你在main()方法用的是 t.run();这不是开启线程的方法,只是执行了线程类的run方法 所以执行了run方法一 ...

完全赞同楼上的
作者: 无气打火机    时间: 2013-7-31 20:10
a767175432 发表于 2013-7-31 17:02
首先你在main()方法用的是 t.run();这不是开启线程的方法,只是执行了线程类的run方法 所以执行了run方法一 ...

yes,赞同+1




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2