Java中两种多线程实现方式的区别

在程序开发中用到多线程,正统的方法是使用Runnable接口,相比继承Thread类,Runnable接口有以下两点好处:

1、避免单继承机制的局限,一个类可以实现多个接口

2、适用于资源的共享

下面以买票程序为例,分析继承Thread类和实现Runnable接口的不同;

1、继承Thread类

package org.mole.xc;
public class TicketThread extends Thread {
private String name;
public TicketThread(String name) {
this.name = name;
}
private int ticket = 5;
public void run(){
for(int i=0;i<10;i++){
if(this.ticket>0){
System.out.println(this.name+"买票ticket:"+this.ticket--);
}
}
}
}

package org.mole.xc;
public class TicketDemo1 {
public static void main(String args[]){
TicketThread ta = new TicketThread("线程1");
TicketThread tb = new TicketThread("线程2");
TicketThread tc = new TicketThread("线程3");
ta.start();
tb.start();
tc.start();
}
}

代码的执行结果如下:


只有5张票,三个线程各自买了5张,并未实现资源的共享,一共买了15张。

2、实现Runnable接口

package org.mole.xc;
public class TicketThread implements Runnable {
private String name;
public TicketThread(String name) {
this.name = name;
}
private int ticket = 5;
public void run(){
for(int i=0;i<10;i++){
if(this.ticket>0){
System.out.println(this.name+"买票ticket:"+this.ticket--);
}
}
}
}

package org.mole.xc;
public class TicketDemo1 {
public static void main(String args[]){
TicketThread ta = new TicketThread("线程1");
new Thread(ta).start();
new Thread(ta).start();
new Thread(ta).start();
}
}

代码执行后运行结果如下:


只有5张票,三个线程各自买了5张,并未实现资源的共享,一共买了5张。

Thread类和Runnable接口的关系如下:


文章思想来自魔乐科技。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值