A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于世德 中级黑马   /  2013-7-31 15:49  /  1141 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

3 个回复

倒序浏览
首先你在main()方法用的是 t.run();这不是开启线程的方法,只是执行了线程类的run方法 所以执行了run方法一次 输出B 接着start方法开启了线程,子线程遇到sleep休眠三秒,主线程执行所以输出A 接着子线程恢复了获取执行权输出了B

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
a767175432 发表于 2013-7-31 17:02
首先你在main()方法用的是 t.run();这不是开启线程的方法,只是执行了线程类的run方法 所以执行了run方法一 ...

完全赞同楼上的
回复 使用道具 举报
a767175432 发表于 2013-7-31 17:02
首先你在main()方法用的是 t.run();这不是开启线程的方法,只是执行了线程类的run方法 所以执行了run方法一 ...

yes,赞同+1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马