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

本文介绍了如何在Java中实现线程间的通信。通过一个App11_8类,展示了如何创建存票和售票线程,利用`synchronized`关键字保证线程安全,并使用`wait()`和`notify()`进行线程间的协调。存票线程在票数不足时等待,而售票线程在无票可售时也会进入等待状态,从而实现了线程间的同步通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用两个线程模拟存票和售票过程,但要求没存入一张票,就售出一张票,售出后,再存入,直到售完为止.
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) //如果没有存票,则售票线程等待
try {wait();}
catch(Exception e) {}
System.out.pri

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值