java多线程的同步控制与线程间的通信

来源:百度知道 编辑:UC知道 时间:2024/06/20 18:09:39
多线程的同步控制与线程间的通信:用synchronized、wait()和notifyAll()完成以下情景
模拟3个人排队买票,每人买一张票。售票员(TicketSeller类)只有1张5元的钱,电影票5元一张。张某拿着1张20元的人民币排在第一,孙某拿着1张10元的人民币排在第二,赵某拿着1张5元的人民币排在第三。
(提示:定义一个售票员TicketSeller类,属性包括5元钱张数fiveNumber、10元钱张数tenNumber和20元钱张数twentyNumber,方法为同步方法卖票sellTicket(int receiveMoney), 创建三个线程张某Zhang、孙某Sun和赵某Zhao,这三个线程共享一个售票员类对象。)

java编程

按照下面这个运行结果(最后两行顺序不一定):
小张 用 20 元买票
小孙 用 10 元买票
小孙 买到票并拿回 5 元
小赵 用 5 元买票
小赵 买到票并拿回 0 元
小张 买到票并拿回 15 元

public class Main {

public static void main(String[] args) {
try {
TicketSeller ts = new TicketSeller();
// 张某拿着1张20元的人民币排在第一,孙某拿着1张10元的人民币排在第二,赵某拿着1张5元的人民币排在第三。
TicketBuyer zhang = new TicketBuyer(ts, "小张", 20);
Thread tZhang = new Thread(zhang);
tZhang.start();
Thread.sleep(100); // 确保买票顺序
TicketBuyer sun = new TicketBuyer(ts, "小孙", 10);
Thread tSun = new Thread(sun);
tSun.start();
Thread.sleep(100);
TicketBuyer zhao = new TicketBuyer(ts, "小赵", 5);
Thread tZhao = new Thread(zhao);
tZhao.start();
} catch (InterruptedException ex) {