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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class  ThreadTest
{
        public static void main(String[] args)
        {
       
                Thread t1=new Thread(new Runnable()
                {
                        public void run()
                        {
                                System.out.println("RunnableRUN().........run!");
                        }

                })
                {
                        public void run()
                        {
                                System.out.println("ThreadRUN().........run!");
                        }
                };
                t1.start();
        }
}
运行结果为什么是Thread类中的run方法(ThreadRUN().........run!),
而不是Runbale接口中的run方法??

4 个回复

倒序浏览
本帖最后由 黎志勇 于 2014-6-21 22:17 编辑


上图是Thread类中,run()方法的源码,可以看到,默认的run()方法是判断是否有传入Runnable对象,有则执行Runnable对象的run()方法。
现在你把匿名Thread类的run方法覆写了,就不存在上述的判断是否有传入Runnable对象并执行执行Runnable对象的run()的操作了。


点评

学习了。  发表于 2014-6-21 22:49
回复 使用道具 举报 1 0
楼主的代码可以分为下面两个 ,两个都是可以运行的,我们都知道,多线程有两种实现方法,一种是继承Thread,一种是实现runnable,按照楼主的代码,程序首先会创建线程,先看runnable的run方法,然后到了Thread的run方法,Thread的run方法,把runnable的覆盖了,所以会执行Thread的run方法,
最后开启线程。

class  ThreadTest4
{
        public static void main(String[] args)
        {

                Thread t1=new Thread()
                {
                        public void run()
                        {
                                System.out.println("ThreadRUN().........run!");
                        }
                };
                t1.start();
        }
}
=============================================================================
class  ThreadTest3
{
        public static void main(String[] args)
        {

                Thread t1=new Thread(new Runnable()
                {
                        public void run()
                        {
                                System.out.println("RunnableRUN().........run!");
                        }

                });
                t1.start();
        }
}


回复 使用道具 举报
我同意上楼的人的回答,认为有点道理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马