黑马程序员技术交流社区
标题:
关于多线程的问题
[打印本页]
作者:
张俊飞
时间:
2013-12-17 21:14
标题:
关于多线程的问题
Thread和Runnable创建线程,有何区别?
作者:
310434550@qq.co
时间:
2013-12-17 21:23
这是创建线程的两种方法:
第一种方法:创建线程的第一种方式:继承Thread类。
步骤:
1.定义类继承Thread
2.复写Thread类中的run方法
3.调用线程的start方法,该方法有两个作用:
①启动线程,②调用run方法
第二种:
创建线程的第二种方式:实现Runnable接口
步骤:
1.定义类实现Runnable接口
2.覆盖Runnable接口中的run方法
将线程要运行的代码存放在该run方法中。
3.通过Thread类建立线程对象
4.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
为什么要将Runnable接口的子类对象传递给Thread的构造函数。
因为,自定义的run方法所属的对象是Runnable接口的子类对象。
所以要让线程去执行指定对象的run方法。就必须明确该run方法所属的对象。
5.调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
两种方式的区别:
继承Thread:线程代码存放Thread子类run方法中。 //这个比较单一只能通过继承实现
实现runnable,线程代码存放在接口的子类的run方法中。 //这个非继承关系也能实现多线程,只要满足 实现多线程的条件即可
作者:
四五六七八
时间:
2013-12-17 21:36
public class Threadextends Object implements Runnable Thread实现了Runnable
使用Runnable比使用有两点好处
一 仍然可以继承一个别的类 使用Thread不能再继承别的类了
二 适于共享资源
例 Class MyRunnable implements Runnable{
}
MyRunnable r=new MyRunnbale();
new Thread(r).start(); new Thread(r).start(); 这两个线程使用的都是r的资源,如果使用Thread虽然也可以,但没有这么方便。
作者:
瞎溜达玩玩
时间:
2013-12-17 21:52
简单说:
Thread只能继承一个,当你要继承别的时候你就不能继承它了
Runnable是一个接口,可以无限制实现。
实现Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。
作者:
冯国强
时间:
2013-12-17 22:02
继承Thread:线程代码存放Thread子类run方法中-------------1
实现runnable,线程代码存放在接口的子类的run方法中------2
这两者线程代码存储的位置不一致。
另外,实现方式避免了单继承的局限性。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2