黑马程序员技术交流社区

标题: java中run和start方法 [打印本页]

作者: 2015天马行空    时间: 2015-11-5 13:11
标题: java中run和start方法
自己的个人体会,在做一些题的过程中,用注释解释出来,并写出代码运行结果的原因,对深刻理解这道题,很有帮助,这只是我自己的一点体会,我把我做过得一些题写上注释和解释,分享一下,希望对朋友们有一定的帮助
public class Test5 {

        public static void main(String[] args) {
                //创建线程对象
                 MyThread t = new MyThread();
                         //调用其run方法
                t.run();
                //开启线程
                t.start();
                //输出字母A
                System.out.println("A");
        }
}
//创建线程类继承Thread类
class MyThread extends Thread {
    //重写其run方法
    public void run() {
            //捕捉异常
        try {
                //让该线程休眠3000毫秒
            Thread.sleep(3000);

            } catch (InterruptedException e) {

         }
        //输出字母B
        System.out.println("B");

        }
}

/*运行结果为:
*                  B
*                  A
*                  B
* 运行结果分析:
*           首先,应先明确start()方法和run()方法的区别,
*                 (1)run()方只是Thread类里的一个普通方法,其可以直接调用多次.
*                         其程序执行路径还是只有主线程一条,还是要顺序执行
*                 (2)start()方法是用来启动线成的,使线程具备了可执行状态.
*                         此时线程并没有运行,一旦得到spu时间片,就开始执行run()方法,
*                         这里方法run()称为线程体,它包含了要执行的这个线程的内容,run方法运行结束,此线程随即终止。
*          其次,本题中有两条线程,一条为主线程,另一条为t所代表的线程.
*                 当程序运行的时候在主线程内,t对象先调用run()方法,但是主线程要先休眠3000毫秒,休眠结束后,输  出B
*                 之后,t所代表的线程开启,主线程和该线程抢占CPU,但是t所代表的线程要先休眠3000毫秒,而主线程不用,
*                 所以,主线程先输出A,等t所代表的线程休眠结束后再输出B
*/





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