黑马程序员技术交流社区

标题: 分享一道入学考试题 [打印本页]

作者: xxxqian1111    时间: 2015-3-9 20:56
标题: 分享一道入学考试题
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  大家有空可以看看




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