黑马程序员技术交流社区

标题: 谁能帮忙解释下这个 [打印本页]

作者: wtjohn    时间: 2014-10-24 21:37
标题: 谁能帮忙解释下这个
  1. new Thread(new Runnable()  //匿名
  2.                 {  
  3.                         public void run()
  4.                         {
  5.                                 System.out.println("runnable run");
  6.                         }
  7.                 })
  8.                 {
  9.                         public void run(){
  10.                                 System.out.println("subthread run");
  11.                         }
  12.                 }.start();  //结果:subthread run
复制代码



作者: wtjohn    时间: 2014-10-24 21:44
{:3_54:} 顶上去...
作者: Nullifier    时间: 2014-10-24 22:44
你这写的什么乱七八糟的。。。
作者: 柳超    时间: 2014-10-24 23:02
匿名内部类;
首先説他的结构实际上是这样的
new Thread(实现了Runnable接口的类){Thread类的run方法}.start()
説白了就是一个匿名内部类中用了一个匿名内部类
类似于这样
写一个类 实现了Runnable接口
写一个类 继承了Thread类
然后再把 自定的实现了Runnable接口的类丢给继承了Thread的孑类开启这个子类

为什么是这个结果我真的不清楚觉得可以这么理解!如果你在一个类中引用一个方法会怎么引用?
肯定是把类传进去然后定义一个名字一样的方法,然后调用传入类的同名方法

作者: noiary    时间: 2014-10-24 23:04
视频说得最清楚了...
作者: wtjohn    时间: 2014-10-24 23:57
noiary 发表于 2014-10-24 23:04
视频说得最清楚了...

视频有讲这个吗? 我是从中间开始看的{:3_54:}
作者: 英雄传说ER    时间: 2014-10-25 02:21
new Thread(){}.start();就是这么简单,new了一个Thread线程并开启,中括号里面的是线程运行的内容——输出语句subthread run
至于他的小括号里面写了什么内容完全不用管,这个相当于线程的参数,中括号里面才是覆盖run方法的内容
例如 new person()和new person(“张三”),
如果想要小括号里面的也运行,里面写成 new Rannable(){}.run() 这样才是开启new Rannable线程
如果只是new Rannable(){}意思是创建了一个线程,但是并没有运行
作者: 郑飞    时间: 2014-10-25 09:29
new Thread(runnable子类对象)//中间那一大堆就是个匿名子类对象
                {
                        public void run(){
                                System.out.println("subthread run");
                }
                }.start();  //结果:subthread run
作者: noiary    时间: 2014-10-25 15:23
wtjohn 发表于 2014-10-24 23:57
视频有讲这个吗? 我是从中间开始看的

匿名内部类,有是肯定有,但具体在哪一天忘了.
作者: wtjohn    时间: 2014-10-25 15:37
英雄传说ER 发表于 2014-10-25 02:21
new Thread(){}.start();就是这么简单,new了一个Thread线程并开启,中括号里面的是线程运行的内容——输出 ...

有点迷糊的就是 平常实现多线程不就两种方法嘛..
new Thread(实现Runnable的子类对象).start()
new Thread{重写run方法}.start()

上面这个是 既传了个(Runnable子类对象)又在{}里重写了run方法。




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