使用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();
}
}
程序的结果如下:
使用Runnable接口实现资源共享的一些心得_第1张图片
因为在程序里面一个对象,启动了两个线程,所以这两个线程一共去卖票。所以出现的结果也是随机的。

但是之前我使用了开启两个对象,然后让他们分别去卖票。程序的代码和效果如下
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();
}
}
此时出现的结果却是:
使用Runnable接口实现资源共享的一些心得_第2张图片
当然其两个线程却是是开启了的,因为再次运行结果如下:
使用Runnable接口实现资源共享的一些心得_第3张图片
但是没有实现我的本意:即实现总计票数只有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接口实现资源共享的一些心得_第4张图片
这样三种情况就表明了:要想实现资源的共享,第一是要使用Runnable接口,第二最能一个对象开启多个线程。这样才能。

你可能感兴趣的:(Runnable共享)