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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© CanABirdFly? 中级黑马   /  2014-7-11 13:17  /  1563 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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随机分布
*/

评分

参与人数 1技术分 +2 收起 理由
Doraemon + 2

查看全部评分

3 个回复

正序浏览
你直接调用run()方法时,这只是单纯的方法调用,这样排序内容肯定就是固定的。而你调用start()方法后,你这时就开启线程,调用线程中的run方法。如果你的电脑CPU是多核的话,多线程执行的速度非常快,而且顺序是不一定的,所以显示内容的顺序也是不一定的。

评分

参与人数 1技术分 +2 收起 理由
Doraemon + 2

查看全部评分

回复 使用道具 举报
。。。。。。。。。。。。。。。。。。。。水
回复 使用道具 举报
在多线程当中,直接调用run()方法,不会有多线程的现象,只是把它当做普通的方法调用,start()方法是开启线程的真正的执行方法。

评分

参与人数 1技术分 +1 收起 理由
Doraemon + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马