黑马程序员技术交流社区

标题: 多线程问题求解? [打印本页]

作者: 一叶障目    时间: 2014-11-5 22:48
标题: 多线程问题求解?
  1. public class ThreadDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 new Thread(new Runnable(){
  6.                         public void run()
  7.                         {
  8.                                 System.out.println("runnable");

  9.                         }
  10.                 })
  11.                 {
  12.                         public void run()
  13.                         {
  14.                                 System.out.println("thread");
  15.                         }
  16.                 }.start();
  17.         }
  18. }
复制代码

为什么这段代码结果是thread而不是runnable?
作者: wf111sxwf    时间: 2014-11-6 11:20
匿名内部类的问题,因为你Thread这个子类中有自己的run
方法会覆盖父类中 run(){r.run)这个方法,所以会执行子类Thread的run方法。也就是打印Thread.
匿名内部类的前提是继承一个父类或者实现了一个接口。
作者: dong53821713    时间: 2014-11-6 11:57
new Thread(new Runnable (){});返回是一个 Thread对象
new Thread(new Runnable (){}){};返回时一个Thread的子类对象
new Thread(new Runnable (){}){public void run(){}};这里的run()会覆盖new Runnable (){}里的run方法

作者: 一叶障目    时间: 2014-11-6 12:50
dong53821713 发表于 2014-11-6 11:57
new Thread(new Runnable (){});返回是一个 Thread对象
new Thread(new Runnable (){}){};返回时一个Thread ...

谢谢,懂了:)
作者: 一叶障目    时间: 2014-11-6 12:51
wf111sxwf 发表于 2014-11-6 11:20
匿名内部类的问题,因为你Thread这个子类中有自己的run
方法会覆盖父类中 run(){r.run)这个方法,所以会 ...

谢谢,加油
作者: 想成为黑马    时间: 2014-11-6 12:57
对啊,会覆盖父类的方法
作者: lighter    时间: 2014-11-6 14:03
这是双重嵌套匿名内部类,不过不能确定是不是run方法覆盖啊?不太懂
作者: OnlyStyle    时间: 2014-11-6 14:57
相当于在类体重覆盖了了run方法。
作者: zhangyangLengen    时间: 2014-11-7 07:38
匿名内部类的问题。子类的方法会覆盖父类的方法。多态和匿名内部类的相结合的问题
作者: touch_world    时间: 2014-11-7 08:05
好厉害啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2