请教大家一个java线程创建的问题。

qq_29448025 2016-12-19 06:33:24
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
System.out.print("Cat");
}
};

Thread t = new Thread( r ) { //???这里传入的参数Runnable对象r,系统是怎么处理的?
public void run() {
System.out.print("Dog");
}
};

t.start(); //输出结果为:Dog
}
...全文
317 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihsxin 2016-12-22
  • 打赏
  • 举报
回复

public void run() {
        if (target != null) {
            target.run();
        }
}
这是Thread类中run方法,target是你传进来的Runnable,可以看到,如果线程启动,就会执行Runnable中的方法 而你的这种写法,相当于实现了Thread的一个子类,并覆写run方法,Runnable当然不会被执行了。如果想被执行,在run中,写一个super.run
q7156792 2016-12-20
  • 打赏
  • 举报
回复
可以理解成第一步Thread t 先传入r,得到一个Thread对象,第二步t 在通过Thread匿名内部得到一个Thread对象(覆盖之前的t对象); 等同以下方式,:
public static void main(String[] args) {
        Runnable r = new Runnable() {
        public void run() {
        System.out.println("Cat");
            }
        };
          
        Thread t = new Thread(r);	         //第一步
        t = new Thread(){  			//第二部
        	 public void run() {
                 super.run();
                 System.out.println("Dog");    
                 }
        };

        t.start();    //输出结果为:Dog
    }
王会跳水的鱼 2016-12-20
  • 打赏
  • 举报
回复
Thread是实现Runable接口 不是继承 ,你实现接口方法当然是dog .( super是父子关系间的调用)
soton_dolphin 2016-12-19
  • 打赏
  • 举报
回复
你为什么要这么写?? 创建线程,传入一个runnable 实例就可以了 Thread t = new Thread(r); t.start();
什么都不能 2016-12-19
  • 打赏
  • 举报
回复
Thread的run方法overload Runnable的run方法
public static void main(String[] args) {
            Runnable r = new Runnable() {
            public void run() {
            System.out.println("Cat");
                }
            };
             
            Thread t = new Thread( r ) {  //???这里传入的参数Runnable对象r,系统是怎么处理的?
                public void run() {
                    super.run();
                    System.out.println("Dog");    
                    }
            };
 
            t.start();    //输出结果为:Dog
        }

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧