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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xxxqian1111 中级黑马   /  2015-3-9 20:56  /  405 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


    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.t.run() 是调用MyThread里的方法run() 这时主线程休眠3秒后打印B
*                         用run()方法实际上没有达到多线程的目的,t.run()只是普通的调用Thread里的方法而已
*                         线程实际还是只有主线程一个,会按照代码顺序执行。所以启动线程一定要用t.start();
                2.t.start() 是启动线程MyThread, 并执行方法run() 这时线程t休眠3秒后打印B
                3.在2执行的时候同时执行System.out.println("A"); 打印A, 因为第2步要休眠3秒,所以先打印出A

这道题很好  可以让你去理解run()方法和start的区别 而不是单纯的知道启动线程是使用start  大家有空可以看看

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马