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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

最歌

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 最歌 中级黑马   /  2014-10-20 18:07  /  1001 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

new Thread(new Runnable(){  //匿名
                        public void run(){
                                System.out.println("runnable run");       
                        }
                })
                {
                        public void run(){
                                System.out.println("subthread run");
                        }
                }.start();  

结果是 输出  :subthread run


按照匿名内部类的运行规则 能推出这个结果,但是参数中出现了Runnable接口的匿名内部类,有点晕了

希望理解的童鞋能给讲讲  谢谢

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

5 个回复

倒序浏览
这个问题有没有输出runnable run 的情况
回复 使用道具 举报
这个问题有没有输出runnable run 的情况
回复 使用道具 举报
wf111sxwf 来自手机 中级黑马 2014-10-20 19:32:00
板凳
匿名内部类的前提是 该类继承了某个父类或者实现了某个接口,你这个new Thread是一个线程对象的子类对象,它其中定义了自己的run方法会覆盖父类中的 那个run方法所以就执行了子类自己的run方法。
回复 使用道具 举报
wf111sxwf 来自手机 中级黑马 2014-10-20 19:37:57
报纸
想要执行runnable中的run方法的把 new Thread这个子类对象的run方法干掉你懂得~因为thread类中接收一个实现runnable接口的对象的构造函数中,源码中的 run方法中写的是r.run.
回复 使用道具 举报
wf111sxwf 来自手机 中级黑马 2014-10-20 19:40:58
地板
手机党解释不到位的请多谅解哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马