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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分析以下程序运行结果,说明原理。(没有分析结果不得分)


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

2 个回复

倒序浏览
刚刚运行了下,结果虽然出来了,我也不懂,等大神解答。
回复 使用道具 举报
首先主函数实例了MyThread类,
        然后调用了它的run方法,这里调用run跟普通方法没有什么区别,此时主进程就执行到了run方法,然后run方法又调
        用sleep方法等待3秒,所以程序运行后等待3秒输出第一个字母:B,然后回到主线程,主线程继续往下执行调用线程的start方法
        ,start后此时就产生了两个线程了,一个在执行run方法,一个在执行主线程,
        执行run方法的执行到调用sleep方法时会等待3秒,而main方法的主线程不用等待,cpu被主线
        程中的System.out打印语句抢占.所以先随后打印出第二个字母:A,然后子线程等待3秒后在输出B,因此输出是BAB。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马