您的位置:首页 > 其它

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

2015-05-15 11:54 555 查看
程序的功能就是简单的对一份公共文件实现共享。程序采用的是卖票的形式来演示整个过程。

程序的整体实现

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接口,第二最能一个对象开启多个线程。这样才能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  runnable 接口 共享
相关文章推荐