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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wnmmp 中级黑马   /  2014-8-5 17:47  /  1568 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    这是网上下载的java基础笔记中关于多线程创建的一个面试题,输出结果如代码,为什么不是:subthread run(换行)runnable run?这是我的理解:先创建Runnable的匿名子类,调用构造代码块输出subthread run,然后线程启动运行run方法输出runnable run。
        new Thread(newRunnable(){  //匿名
            public voidrun(){
                System.out.println("runnablerun");
            }
        })
        {
            public void run(){
                System.out.println("subthreadrun");
            }
       }.start();  //结果:subthread run

12 个回复

正序浏览
重写的方法覆盖了原有的方法。
回复 使用道具 举报
215041631 发表于 2014-8-6 20:50
这代码看着就觉得恶心。

也就考试我们一下,真实开发用不到
回复 使用道具 举报
这代码看着就觉得恶心。
回复 使用道具 举报
fantacyleo 发表于 2014-8-5 17:58
其实这考的是匿名类创建的概念。这里创建了Runnable 的匿名子类,但是——没使用。因为new Thread(new Runn ...

厉害....
回复 使用道具 举报
明白了,是圆括号“)”没搞懂,要是放在“.start()”前面就应该是两个结果了
回复 使用道具 举报
复写了接口中的Run方法
回复 使用道具 举报
你override了的thread的run方法,不会再运行接口中的方法
回复 使用道具 举报
Runnable和Thread都用匿名类的形式创建。Thread中的run方法被覆盖了。
回复 使用道具 举报
重写run方法,匿名内部类被覆盖了
回复 使用道具 举报
你override了的thread的run方法,不会再运行接口中的方法
回复 使用道具 举报
其实这考的是匿名类创建的概念。这里创建了Runnable 的匿名子类,但是——没使用。因为new Thread(new Runnable() {...})这句代码的功能被紧接着的{}变成了创建Thread的匿名子类并在这个匿名子类中重写Thread的run方法最后启动线程执行这个重写的run方法。之前重写Runnable 的工作白费了,被丢弃了

点评

厉害啊  发表于 2014-8-5 20:37
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马