博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Runnable和Thread 两种实现方式的区别和联系:
阅读量:4069 次
发布时间:2019-05-25

本文共 1410 字,大约阅读时间需要 4 分钟。

两种实现方式的区别和联系:

在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

  • 避免单继承的局限,一个类可以实现多个接口。
  • 适合于资源的共享

以卖票程序为例,通过Thread类完成:

package org.demo.dff;   
class MyThread extends Thread{  
private int ticket=10;  
public void run(){  
for(int i=0;i<20;i++){  
if(this.ticket>0){  
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;i<20;i++){  
if(this.ticket>0){  
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接口的子类。

 

转载地址:http://kgmji.baihongyu.com/

你可能感兴趣的文章
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret&nbsp;1.1&nbsp;正在审核中
查看>>
IOS开发的开源库
查看>>