public class TicketSeller {
public static int ticketSum=100;
public static boolean state=true;
public static int cunt=0;
/**
* @param args
*/
public static void main(String[] args) {
TicketSellerMachine mechineOfGuangZhou=new TicketSellerMachine("GuangZhou");
TicketSellerMachine mechineOfShangHai=new TicketSellerMachine("ShangHai");
TicketSellerMachine mechineOfBeiJing=new TicketSellerMachine("BeiJing");
TicketSellerMachine mechineOfShengZheng=new TicketSellerMachine("ShengZheng");
TicketSellerMachine mechineOfHuNan=new TicketSellerMachine("HuNan");
mechineOfGuangZhou.start();
mechineOfShangHai.start();
mechineOfBeiJing.start();
mechineOfShengZheng.start();
mechineOfHuNan.start();
}
public synchronized static void selledTicket(String mechineName){
if(TicketSeller.ticketSum>0){
System.out.println("Ticket("+(++TicketSeller.cunt)+") have been sold in "+mechineName+" mechine.");
TicketSeller.ticketSum--;
}else{
TicketSeller.state=false;
System.out.println("Sorry! Tickets have been sold out...");
}
}
}
class TicketSellerMachine extends Thread{
private String mechineName=this.getName();
public TicketSellerMachine() {
super();
}
public TicketSellerMachine(String mechineName) {
this.mechineName = mechineName;
}
@Override
public void run() {
while(TicketSeller.state){
TicketSeller.selledTicket(this.getMechineName());
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public String getMechineName() {
return mechineName;
}
public void setMechineName(String mechineName) {
this.mechineName = mechineName;
}
}