黑马程序员技术交流社区

标题: 调用run()和调用start的区别 [打印本页]

作者: CanABirdFly?    时间: 2014-7-11 13:17
标题: 调用run()和调用start的区别
class Demo3 extends Thread
{
        private String name;
        Demo3(String name)
        {
                this.name = name;
        }
        public void run()//重写Thread类中的run方法
        {
                for(int x=1; x<10; x++)
                {
                        for(int y=1; y<999999999; y++){}
                        System.out.println(name+"......x="+x);
                }
        }
}
class ThreadDemo
{
        public static void main(String[] args)
        {
                Demo3 d1 = new Demo3("呵呵");
                Demo3 d2 = new Demo3("hehe");
                d1.start();//开启线程
                d2.start();
        /*
                d1.run();
                d2.run();
        */
        }
}
/*调用run()和调用start的区别:
1.调用run()只是单纯的调用了定义好的run()方法并没有
实现多线程而调用start是开启多线程的开关实现了多线程
提高了运算速度,节省了时间。
2.结果的排序不同,调run()的排序为先D1的内容然后D2的内容 调用start()为D1D2随机分布
*/
作者: 张慈瑞    时间: 2014-7-12 21:43
在多线程当中,直接调用run()方法,不会有多线程的现象,只是把它当做普通的方法调用,start()方法是开启线程的真正的执行方法。
作者: alive    时间: 2014-7-12 23:14
。。。。。。。。。。。。。。。。。。。。水
作者: tianleboy    时间: 2014-7-13 12:09
你直接调用run()方法时,这只是单纯的方法调用,这样排序内容肯定就是固定的。而你调用start()方法后,你这时就开启线程,调用线程中的run方法。如果你的电脑CPU是多核的话,多线程执行的速度非常快,而且顺序是不一定的,所以显示内容的顺序也是不一定的。




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