黑马程序员技术交流社区

标题: 分析下面题目,这个是点招题 [打印本页]

作者: 我类个去    时间: 2016-5-27 10:36
标题: 分析下面题目,这个是点招题
分析以下程序运行结果,说明原理。(没有分析结果不得分)


    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");
            }
    }
求大神解惑!!


作者: yuanqingleivip    时间: 2016-5-27 11:03
刚刚运行了下,结果虽然出来了,我也不懂,等大神解答。
作者: zhoubinjian    时间: 2016-5-27 11:42
首先主函数实例了MyThread类,
        然后调用了它的run方法,这里调用run跟普通方法没有什么区别,此时主进程就执行到了run方法,然后run方法又调
        用sleep方法等待3秒,所以程序运行后等待3秒输出第一个字母:B,然后回到主线程,主线程继续往下执行调用线程的start方法
        ,start后此时就产生了两个线程了,一个在执行run方法,一个在执行主线程,
        执行run方法的执行到调用sleep方法时会等待3秒,而main方法的主线程不用等待,cpu被主线
        程中的System.out打印语句抢占.所以先随后打印出第二个字母:A,然后子线程等待3秒后在输出B,因此输出是BAB。




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