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

时间:2021-04-21 17:32:05

在程序开发中用到多线程,正统的方法是使用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();
}
}

代码的执行结果如下:

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

只有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();
}
}

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

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

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

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

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

文章思想来自魔乐科技。