使用Runnable接口实现资源共享的一些心得

程序的功能就是简单的对一份公共文件实现共享。程序采用的是卖票的形式来演示整个过程。
程序的整体实现
class MyThread implements Runnable{
private String name;
private int ticket=5; //总计五张票
public MyThread(String name){
this.name=name;
}
public void run(){ //覆写Runnable的run()方法
for(int i=1;i<10;i++){
if(ticket>0){//判断是否还有余票
System.out.println(name+”卖票了第”+ticket–+”张票”);

       }
     }
   }

}
public class RunnableTicketDemo{
public static void main(String args[]){
MyThread mt1=new MyThread(“卖票员A”);
Thread t1=new Thread(mt1);
Thread t2=new Thread(mt1);
t1.start();
t2.start();
}
}
程序的结果如下:
这里写图片描述
因为在程序里面一个对象,启动了两个线程,所以这两个线程一共去卖票。所以出现的结果也是随机的。

但是之前我使用了开启两个对象,然后让他们分别去卖票。程序的代码和效果如下
class MyThread implements Runnable{
private String name;
private int ticket=5; //总计五张票
public MyThread(String name){
this.name=name;
}
public void run(){ //覆写Runnable的run()方法
for(int i=1;i<10;i++){
if(ticket>0){//判断是否还有余票
System.out.println(name+”卖票了第”+ticket–+”张票”);

       }
     }
   }

}
public class RunnableTicketDemo{
public static void main(String args[]){
MyThread mt1=new MyThread(“卖票员A”);
MyThread mt2=new MyThread(“卖票员B”);
Thread t1=new Thread(mt1);
Thread t2=new Thread(mt2);
t1.start();
t2.start();
}
}
此时出现的结果却是:
这里写图片描述
当然其两个线程却是是开启了的,因为再次运行结果如下:
这里写图片描述
但是没有实现我的本意:即实现总计票数只有5张。这样Runnable接口实现的功能就类似于继承Thread类,没有实现资源的共享一样。
若是结合上两个程序
class MyThread implements Runnable{
private String name;
private int ticket=5; //总计五张票
public MyThread(String name){
this.name=name;
}
public void run(){ //覆写Runnable的run()方法
for(int i=1;i<10;i++){
if(ticket>0){//判断是否还有余票
System.out.println(name+”卖票了第”+ticket–+”张票”);

       }
     }
   }

}
public class RunnableTicketDemo{
public static void main(String args[]){
MyThread mt1=new MyThread(“卖票员A”);
MyThread mt2=new MyThread(“卖票员B”);
Thread t11=new Thread(mt1);
Thread t12=new Thread(mt1);
Thread t13=new Thread(mt1);
Thread t21=new Thread(mt2);
Thread t22=new Thread(mt2);
Thread t23=new Thread(mt2);
t11.start();
t12.start();
t13.start();
t21.start();
t22.start();
t23.start();
}
}
这里写图片描述
这样三种情况就表明了:要想实现资源的共享,第一是要使用Runnable接口,第二最能一个对象开启多个线程。这样才能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值