package com.feisi.test;
//火车站类
public class Train {
Ticket ti;
public static void main(String[] args) {
Train train =new Train();
//四个人买票
Person person1 = new Person(train);
Person person2 = new Person(train);
Person person3 = new Person(train);
Person person4 = new Person(train);
//两个代售点
Agency agency1 = new Agency(train);
Agency agency2 = new Agency(train);
}
}
//消费者类
class Person extends Thread{
private Train train;
public Person(Train train){
this.train = train;
start();
}
public void run(){
synchronized (train){
while(true){
if(train.ti==null) {
try {
train.wait();//等待
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "消费者:买票");
train.ti=null;
}
}
}
}//线程结束
}
//代售点类
class Agency extends Thread{
private Train train;
public Agency(Train train){
this.train = train;
start();
}
public void run(){
while(true){
synchronized(train){
if(train.ti==null){
train.ti = new Ticket();
System.out.println(Thread.currentThread().getName()+"代售点:卖票 "+train.ti);
train.notify();//协作
}
}
}
}
}
//票类
class Ticket{
private static int i=1;//总共100张票
private int count=i++;
public Ticket(){
if(count>100){
System.out.println("票已卖完!!");
System.exit(0);
}
}
public String toString(){
return "卖出 "+count+"张票";
}
}