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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、两种创建方式的区别

        继承Thread:线程代码存放在Thread子类run方法中。

        实现Runnable:线程代码存放在接口子类run方法中。  



实现Runnable接口再调用start方法就可以开启线程,这个“放在子类接口run方法中”是什么意思啊?接口也有子类的意思?还是实现了该接口就叫接口子类Run方法?


评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

15 个回复

正序浏览
Thread类里的run()方法应该不只是这么简单的,它需要区分是哪一种构造方法创建的对象去启动线程运行,这样写实为了好理解,Java是面向对象的编程语言,过程的实现没必要太过于转牛角尖,思绪收不回来会对你有害,最后,楼主加油,一起努力~~
回复 使用道具 举报
本帖最后由 Chans_宇 于 2015-5-22 20:41 编辑

实现Runnable:线程代码存放在接口子类run方法中。其实就是使用装修设计模式:
接口子类其实就是实现了接口Runnable接口中run()方法的类,如:
public class RunnableDemo implements Runnble{
     public void run(){
        线程需要运行的代码(要实现的Runnable接口中run()方法的内容);
        }
}

主函数中需要使用Thread的带参构造来创建线程,形式如下:
RunnableDemo rd=new RunnableDemo();   
Thread t=new Thread(rd);
因为需要调用Thread类的start()方法启动线程去运行接口实现子类中run()方法中的代码,因此这里使用了装修设计模式,我模拟了一下Thread带参构造的实现方式如下:
class Thread{
    Runnable r;    //多态的Runnable实现子类对象
    public Thread(Runnable r){
        this.r=r;
    }
    public  void run(){
        r.run();
    }

上面我只是简单模拟了Thread带参构造的实现原理,个人理解随手就写下来了,希望对你有帮助,同时有谬误也希望指正。如果你想看它具体怎么实现其实可以用Eclipse去打开源码看一下。

回复 使用道具 举报
1、实现接口的类就是接口的子类;2、实现接口Runnable的类中需要复写run方法,类中的run方法叫接口子类run方法;3、类可以通过继承Thread类,或者实现Runnable接口,进而创建线程。
回复 使用道具 举报
没必深入那么复杂,简单的一个问题,复写Runnable的类 线程需要复写run方法,run里面装的是需要运行的代码块,Thread创建线程,.start()才能开启运行线程,
回复 使用道具 举报
本来挺明白的东西  给问糊涂了  睡觉睡觉
回复 使用道具 举报
嘎嘎鸭子 来自手机 中级黑马 2015-5-22 13:09:02
11#
也就是说Thread类中的run方法,用于存储线程要运行的代码
回复 使用道具 举报
接口中的方法都是抽象的,需要被子类去复写。
回复 使用道具 举报
灯火通明 来自手机 中级黑马 2015-5-22 12:09:26
9#
接口实现类
回复 使用道具 举报
hsx500 发表于 2015-5-22 10:06
我的问题是“接口子类run方法”是什么意思啊~~

那,应该就是实现了Runnable接口就算接口的子类了吧。
没有深究过这个东西。我等着你这帖子中的答案,也学习学习。
回复 使用道具 举报
来学习下。。。。
回复 使用道具 举报
hsx500 发表于 2015-5-22 10:07
接口子类run方法   意思是  实现了run方法就是Runnable的子类吗?

runnable接口中就只有一个方法,run(),runnable的子类实现runnable接口以后只需要覆盖run方法就行了
classMyThread implements Runnable
{
public void run()
{
System.out.println("线程开始");
}
回复 使用道具 举报
枕寒流 发表于 2015-5-22 09:51
为什么要覆盖run方法呢?
Thread类用于描述线程。该类就定义了一个功能,用于存储线程要运行的代码。该存储 ...

接口子类run方法   意思是  实现了run方法就是Runnable的子类吗?
回复 使用道具 举报
小悟空et 发表于 2015-5-22 09:33
嗯。就是实现了Runnable接口的类中,需要复写run方法,将需要运行的代码放进去 ...

我的问题是“接口子类run方法”是什么意思啊~~
回复 使用道具 举报
为什么要覆盖run方法呢?
Thread类用于描述线程。该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法.
也就是说Thread类中的run方法,用于存储线程要运行的代码
回复 使用道具 举报
嗯。就是实现了Runnable接口的类中,需要复写run方法,将需要运行的代码放进去
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马