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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心灵之歌 中级黑马   /  2013-8-18 17:01  /  1109 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面这个程序运行的结果是  'B'  B"'A'     还是'‘B’  'A‘  ’B‘’.为什么?
求大神指点...  
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");
            }
    }

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

3 个回复

倒序浏览
结果是BAB, 首先从主线程开始执行,当执行到t.run()的时候,线程MyThread还没有开启,所以t.run();是调用run()方法,而主线程进去执行run方法的时候,也会sleep3000毫秒,输出一个B 然后执行t.start(); 这时候线程MyThread 才开启。主线程跟这个线程抢CPU的执行权,但是MyThread sleep 3000毫秒;所以先输出主线程的A 最后再输出B。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
这都不一定!看主线程和线程t那一个线程先抢占到了CPU了,

还要看在执行过程个如果交互的话,那么也会是另一种情况!
回复 使用道具 举报
这都不一定!看主线程和线程t那一个线程先抢占到了CPU了,

还要看在执行过程个如果交互的话,那么也会是另一种情况!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马