自动售票找零多线程(三)

2014-11-24 02:53:07 · 作者: · 浏览: 2
}
}
}
}
}

买票人:

Java代码
package com.thread;

import java.util.Timer;

public class BuyTicket extends Thread{

//售票机
private TicketMachine machine;
//购票数
private int count;
//买票钱
private float money;
//姓名
//private String name;

public BuyTicket(){

}

public BuyTicket(TicketMachine machine, int count, float money,String name) {
super(name);
this.machine = machine;
this.count = count;
this.money = money;
//this.name = name;
System.out.println(name+":帮我买"+count+"张票");
}

public void run() {
machine.saleTicket(count, money);
}
}

对于那些找零机器里没钱找的找零线程代码:

Java代码
package com.thread;

public class ChangeTask extends Thread {

private TicketMachine machine;

private final float result;

public ChangeTask(TicketMachine machine,float result){
this.machine=machine;
this.result=result;
}

@Override
public void run() {
//System.out.println("找零任务线程运行了。。。");
while(true){
synchronized (machine) {
if(machine.change(result)){
machine.notifyAll();
//System.out.println("已经通知了");
break;
}
}
}
}
}

测试代码了:

Java代码
package com.thread;

public class Test {

public static void main(String[] args) {

TicketMachine machine=new TicketMachine();
BuyTicket buy1=new BuyTicket(machine,1,5.0F,"张三");
BuyTicket buy2=new BuyTicket(machine,3,15.0F,"李四");
BuyTicket buy3=new BuyTicket(machine,5,33.0F,"王五");
BuyTicket buy4=new BuyTicket(machine,6,50.0F,"赵六");
buy1.start();
buy2.start();
buy3.start();
buy4.start();
}

}

作者“l555iu”