java的线程同步题

来源:百度知道 编辑:UC知道 时间:2024/06/05 21:48:05
模拟3个人(赵中堂,张小有,孙大名)排队买票,每人买1张票。售票员(TickSeller类)只有1张五元的钱,电影票五元钱一张。张某拿1张二十元的人民币排在孙某前面买票,孙某拿1张十元的人民币排在赵的前面买票,赵某拿1张五元的人民币排在最后。
提示:先定义一个售票员类TickSeller,此类中有三个成员变量(fiveNumber, tenNumber, twentyNumber)和一个sellTicket方法(将此方法声明为同步方法,这个方法的参数为receiveMoney).再定义一个实现了Runnable接口的电影院类Cinema, Cinema类的类体由三个线程对象赵中堂,张小有,孙大名(这三个线程使用同一目标对象)和一个售票员对象组成.
(最好有一些注释!!!!)
要代码就可以了,最好多一些注释,Thanks,我会追加20分的

我先问下你是直接来要代码的吗?
我QQ449002892
如果只想要代码
这很简单,但是想知道怎么做出来就不那么简单了。

一共三个类
////////////////////////////////////////////////////////////////////////////////
public class TickSeller {
/**
* 售票员对象手中5元面值的纸币数量
*/
private int fiveNumber = 0;
/**
* 售票员对象手中10元面值的纸币数量
*/
private int tenNumber = 0;
/**
* 售票员对象手中20元面值的纸币数量
*/
private int twentyNumber = 0;

/**
* 构造方法,初始化售票员对象手中各种面值的纸币数量
*/
public TickSeller() {
fiveNumber = 1;//初始化,5元面值纸币1张
tenNumber = 0;//初始化,10元面值纸币0张
twentyNumber = 0;//初始化,20元面值纸币0张
}

/**
* 售票方法
* @param receiveMoney 接收的购票金额
* @return 如果能够进行售票操作,则返回true,否则返回false
*/
public synchronized boolean sellTicket(int receiveMoney) {
if (receiveMoney==Cinema.FIVE) {//当收到的购票金额为5元时,可以进行