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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朦胧色彩 中级黑马   /  2015-10-20 10:22  /  437 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

new Thread(new Runnable()
{
    public void run()
    {
        System.out.println("runnable run");
    }
})
{
    public void run()
    {
        System.out.println("subThread run");
    }
}.start();

7 个回复

倒序浏览
输出 subThread run
Thread类里边有一个 run 方法,原方法的代码大致原理是这样的
public void run(){
    myRunnable.run()
}
其中myRunnable 为你传递给Thread 的实现了Runnable接口的对象,
所以在不继承Thread类 创建线程时,需要传递一个Runnable的实例,
但是在继承Thread类时,需要重写 run()方法,方法体内容是自己定义的,所以不会再去调用
new Runnable()重点run方法。
即  创建线程时  实行顺序是   先 子类的run    后  接口的 run
回复 使用道具 举报
subThread run
回复 使用道具 举报
runnable run会将Runnable的抽象方法给复写掉,就是说Thread类的run方法已被复写成runnable run,这时再建立Thread类的匿名内部内时,subThread run方法又把runnable run方法给复写掉了
所以会输出subThread run
可以使用super.run()测试一下的。
回复 使用道具 举报
fmi110 发表于 2015-10-20 12:57
输出 subThread run
Thread类里边有一个 run 方法,原方法的代码大致原理是这样的
public void run(){

谢谢!大概明白了
回复 使用道具 举报
罗志辉 发表于 2015-10-20 13:53
runnable run会将Runnable的抽象方法给复写掉,就是说Thread类的run方法已被复写成runnable run,这时再建 ...

嗯嗯!多谢指教!我明白了
回复 使用道具 举报
学习一下~~~
回复 使用道具 举报
亲测是Thread重写的领先
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马