A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangweibin2573 中级黑马   /  2014-8-13 18:04  /  2674 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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. }
复制代码

13 个回复

倒序浏览
这没啥不正常啊
回复 使用道具 举报
一个类既继承了Thread类,就可以创建线程了。如果只实现了runnable也可当参数传给线程构造函数,来创建线程,但这里既继承了,也实现了!
回复 使用道具 举报

逻辑分析下运行过程,怎么个可以!或者来点理论依据额
回复 使用道具 举报
把RunnableDemo 的对象当做参数传给Thread的构造函数,说明新建的Thread运行的时候 ,运行RunnableDemo 里的run方法
回复 使用道具 举报
应该是覆写了Runnable借口的run方法把
回复 使用道具 举报
没错,RunnableDemo 这个类既继承自thread,也实现了runnable接口,也就是说他即是thread的子类,也是runnable的实现。最后调用的时候,是新开一个线程,传入runnable对象,RunnaleDemo是runnable的实现,所以是没错的。尽管这样有些多余,因为线珵中传入runnable对象,只是调用了其中的run()方法,没有必要继承自线程的,或者直接重写线程的run()方法,然后用RunnableDemo 的实例对象,也行。
回复 使用道具 举报
知者不博,博者不知,没人这样写吧
回复 使用道具 举报
来学习下。

回复 使用道具 举报
这个可以,会打印一次this is run
回复 使用道具 举报
这个。。。不能即继承又实现吧,根据你的写法,只实现就行
回复 使用道具 举报
运行是正常的,非一般的思路。
回复 使用道具 举报
今天下午刚刚考了,你就上来问,Runnable接口其实就是从Thread类里面抽象出来的,这就像你既throws IOException,又写了try,catch一样。虽然有重复,但是可以同时使用.
回复 使用道具 举报
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传入这个构造方法。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马