求救!!求救!Java高手帮帮忙!万分感激!

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:22:08
选修Java的作业不会做啊! 多线程的同步控制与线程间的通信:用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,这三个线程共享一个售票员类对象。)给出的程序代码要有详细注释!谢谢!

你试试这个:
public class Example8_10{
public static void main(String args[]){
String s1="张三",s2="孙大名",s3="赵中堂";
Cinema canema=new Cinema(s1,s2,s3);
Thread zhang,sun,zhao;
zhang=new Thread(canema);
sun=new Thread(canema);
zhao=new Thread(canema);
zhang.setName(s1);
sun.setName(s2);
zhao.setName(s3);
zhang.start();
sun.start();
zhao.start();
}
}
class Cinema implements Runnable{ //实现Runnable接口的类(电影院)
TicketSeller seller; //电影院的售票员
String name1,name2,name3; //买票人的名字(线程的名字)
Cinema(String s1,String s2,String s3){
seller=new TicketSeller();
name1=s1;
name2=s2;
name3=s3;
}
public void run(){
if(Thread.currentThread().getName().equals(name1)){