《java程序设计基础》线程之间的通信

用两个线程模拟存票和售票过程,但要求没存入一张票,就售出一张票,售出后,再存入,直到售完为止.package yuan; public class App11_8 {public static void main(String[] args) { // TODO Auto-generated method stub Tickets t = new Tickets(10); //新建一个票类对象t,总票数作为参数 new Producer(t).start(); /
摘要由CSDN通过智能技术生成
用两个线程模拟存票和售票过程,但要求没存入一张票,就售出一张票,售出后,再存入,直到售完为止.
package yuan;            

public class App11_8 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Tickets t = new Tickets(10); //新建一个票类对象t,总票数作为参数
	new Producer(t).start();     //以票类对象t作为参数创建存票线程对象,并启动
	new Consumer(t).start();     //以同一票类对象t为参数创建售票线程对象,并启动
}

}
class Tickets{ //票类
protected int size; //总票数
int number = 0; //票号
boolean available = false; //表示当前是否有票可售
public Tickets(int size) { //构造方法,传入总能够票数参数
this.size = size;
}
public synchronized void put() { //同步方法,实现存票功能
if(available) //如果还有存票代售,则存票线程等待
try {wait();}
catch(Exception e) {}
System.out.println(“存入第[”+(++number)+"]号票");
available = true;
notify(); //存票后唤醒售票线程开始售票
}
public synchronized void sell() { //同步方法,实现售票功能
if(!available) //如

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值