您的位置:首页 > 编程语言 > Java开发

[转]java中Thread与Runnable的区别

2012-01-10 04:30 453 查看
在java中可有两种方式实现多线程,一种是继承thread类,一种是实现runnable接口;thread类是在java.lang包中定义的。一个类只要继承了thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限,下面看例子:
package org.thread.demo;
class mythread extends thread{
private string name;
public mythread(string name) {
super();
this.name = name;
}
public void run(){
for(int i=0;i避免点继承的局限,一个类可以继承多个接口。
->适合于资源的共享
以卖票程序为例,通过thread类完成:
package org.demo.dff;
class mythread extends thread{
private int ticket=10;
public void run(){
for(int i=0;i0){
system.out.println("賣票:ticket"+this.ticket--);
}
}
}
};
下面通过三个线程对象,同时卖票:
package org.demo.dff;
public class threadticket {
public static void main(string[] args) {
mythread mt1=new mythread();
mythread mt2=new mythread();
mythread mt3=new mythread();
mt1.start();//每个线程都各卖了10张,共卖了30张票
mt2.start();//但实际只有10张票,每个线程都卖自己的票
mt3.start();//没有达到资源共享
}
}
如果用runnable就可以实现资源共享,下面看例子:
package org.demo.runnable;
class mythread implements runnable{
private int ticket=10;
public void run(){
for(int i=0;i0){
system.out.println("賣票:ticket"+this.ticket--);
}
}
}
}
package org.demo.runnable;
public class runnableticket {
public static void main(string[] args) {
mythread mt=new mythread();
new thread(mt).start();//同一个mt,但是在thread中就不可以,如果用同一
new thread(mt).start();//个实例化对象mt,就会出现异常
new thread(mt).start();
}
};
虽然现在程序中有三个线程,但是一共卖了10张票,也就是说使用runnable实现多线程可以达到资源共享目的。
runnable接口和thread之间的联系:
public class thread extends object implements runnable
发现thread类也是runnable接口的子类。

======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: