黑马程序员技术交流社区

标题: 看了毕老师的视频,我有个疑惑,这样写行吗? [打印本页]

作者: xr782271574    时间: 2013-5-14 17:53
标题: 看了毕老师的视频,我有个疑惑,这样写行吗?
new Thread
(
new Runnable()
{
        public void run()
        {
                System.out.println(Thread.currentThread().getName());
        }
}
).start();



作者: 袁梦希    时间: 2013-5-14 18:01
是在main方法里的还是在类里面的,楼主可不可以把全部代码发过来,一起研究一下
作者: 、__WSD吴少东    时间: 2013-5-14 18:05
本帖最后由 、__WSD吴少东 于 2013-5-14 18:06 编辑

这个是不是匿名类中再加匿名内部类,然后覆写run()方法,行驶可行,可是.....

你不觉得...用的时候很麻烦么?   
作者: xr782271574    时间: 2013-5-14 18:07
、__WSD吴少东 发表于 2013-5-14 18:05
这个是不是匿名类中再加匿名内部类,然后覆写run()方法,行驶可行,可是.....

你不觉得...用的时候很麻烦 ...

哈哈,是有点麻烦~
作者: 、__WSD吴少东    时间: 2013-5-14 18:12
xr782271574 发表于 2013-5-14 18:07
哈哈,是有点麻烦~

一般这种方法,只适用于调用一次方法的时候,你要再线程里搞这个....我很佩服你的手指头....不累么?
作者: 许智敏    时间: 2013-5-14 18:18
  1. //Thread的调用过程。
  2. class Thread{
  3.         private Runnable r;
  4.         Thread(){}
  5.         Thread(Runnable r){
  6.                 this.r = r;
  7.         }
  8.         public void run(){
  9.                 if(r!=null)
  10.                         r.run();
  11.         }
  12.         public void start(){
  13.                 run();
  14.         }
  15. }
复制代码
可以的。
将匿名内部类作为实参传入Thread()中,new Runnable()是实现Runnable接口的子类对象,并覆写了Runnable中的run方法,外层的Thread类的子类对象调用start方法,实现Runnable内run方法的调用。
参考上述调用过程可以帮助理解。



作者: 尹丽峰    时间: 2013-5-14 18:31
本帖最后由 尹丽峰 于 2013-5-14 18:39 编辑

package heima;
public class Demo2 extends Thread

{
public static void main(String[]args)
{
  new Thread
  (
  new Runnable()
  {
          public void run()
          {
                  System.out.println(Thread.currentThread().getName());
          }
  }
  ).start();
  new Thread
  (
    new Runnable()
    {
     public void run()
     {
      System.out.println(Thread.currentThread().getName());
     }
    }
  ).start();

}
}
可以这么写
作者: xr782271574    时间: 2013-5-14 20:41
、__WSD吴少东 发表于 2013-5-14 18:12
一般这种方法,只适用于调用一次方法的时候,你要再线程里搞这个....我很佩服你的手指头....不累么? ...

只用一次,才这样写,其他时候都不这样写。
作者: xr782271574    时间: 2013-5-14 20:41
许智敏 发表于 2013-5-14 18:18
可以的。
将匿名内部类作为实参传入Thread()中,new Runnable()是实现Runnable接口的子类对象,并覆写了Run ...

谢谢,哥们:handshake
作者: xr782271574    时间: 2013-5-14 20:42
尹丽峰 发表于 2013-5-14 18:31
package heima;
public class Demo2 extends Thread

谢谢兄弟指导~:)
作者: xiewen    时间: 2013-5-14 23:20
这样写肯定可以的
new Runnable()
{
        public void run()
        {
                System.out.println(Thread.currentThread().getName());
        }
}
就是实现了Runable接口的匿名内部类




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