黑马程序员技术交流社区

标题: 一个线程这样写会怎么样?? [打印本页]

作者: jiangweibin2573    时间: 2014-8-13 18:04
标题: 一个线程这样写会怎么样??
本帖最后由 jiangweibin2573 于 2014-8-13 18:11 编辑

  1. 这么写错了吗,为什么呢!对?又为啥呢?
  2. public class RunnableDemo extends Thread implements Runnable {
  3.         
  4.         @Override
  5.         public void run() {
  6.                 System.out.println("this is run");
  7.         }

  8.         public static void main(String[] args) {
  9.                 Thread t = new Thread(new RunnableDemo());
  10.                 t.start();
  11.         }
  12. }
复制代码

作者: 杨庆雷    时间: 2014-8-13 18:13
这没啥不正常啊
作者: jiangweibin2573    时间: 2014-8-13 18:19
一个类既继承了Thread类,就可以创建线程了。如果只实现了runnable也可当参数传给线程构造函数,来创建线程,但这里既继承了,也实现了!
作者: jiangweibin2573    时间: 2014-8-13 18:21
杨庆雷 发表于 2014-8-13 18:13
这没啥不正常啊

逻辑分析下运行过程,怎么个可以!或者来点理论依据额
作者: 杨庆雷    时间: 2014-8-13 18:31
把RunnableDemo 的对象当做参数传给Thread的构造函数,说明新建的Thread运行的时候 ,运行RunnableDemo 里的run方法
作者: dftgg    时间: 2014-8-13 18:34
应该是覆写了Runnable借口的run方法把
作者: ❤如止水之絕境    时间: 2014-8-13 20:13
没错,RunnableDemo 这个类既继承自thread,也实现了runnable接口,也就是说他即是thread的子类,也是runnable的实现。最后调用的时候,是新开一个线程,传入runnable对象,RunnaleDemo是runnable的实现,所以是没错的。尽管这样有些多余,因为线珵中传入runnable对象,只是调用了其中的run()方法,没有必要继承自线程的,或者直接重写线程的run()方法,然后用RunnableDemo 的实例对象,也行。
作者: 裤裆里的温柔、    时间: 2014-8-13 20:25
知者不博,博者不知,没人这样写吧
作者: 小糊涂神    时间: 2014-8-13 20:40
来学习下。


作者: Moriarty    时间: 2014-8-13 20:42
这个可以,会打印一次this is run
作者: 姜佳文    时间: 2014-8-13 20:58
这个。。。不能即继承又实现吧,根据你的写法,只实现就行
作者: paozhuanyinyu    时间: 2014-8-13 21:09
运行是正常的,非一般的思路。
作者: rolling-stone    时间: 2014-8-13 22:11
今天下午刚刚考了,你就上来问,Runnable接口其实就是从Thread类里面抽象出来的,这就像你既throws IOException,又写了try,catch一样。虽然有重复,但是可以同时使用.
作者: hejinzhong    时间: 2014-8-16 20:54
Thread类的构造方法被重载了八次,构造方法如下:

  1. public Thread( );
  2. public Thread(Runnable target);
  3. public Thread(String name);  
  4. public Thread(Runnable target, String name);
  5. public Thread(ThreadGroup group, Runnable target);
  6. public Thread(ThreadGroup group, String name);
  7. public Thread(ThreadGroup group, Runnable target, String name);  
  8. public Thread(ThreadGroup group, Runnable target, String name, long stackSize);
复制代码

Runnable target
实现了Runnable接口的类的实例。要注意的是Thread类也实现了Runnable接口,因此,从Thread类继承的类的实例也可以作为target传入这个构造方法。





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