火车卖票多线程程序
现有20张票,5个卖票窗口同时卖票,使用多线程和同步实现
package cn.st;
public class SellingTickets implements Runnable { //Runnable实现类
private int ticket = 20; //一共有20张票
@Override
public void run() {
this.sell();
}
public synchronized void sell(){ //线程同步
while (true){
if(ticket<1){ //如果没有票了,停止售票
System.out.println("票已售完!");
System.exit(0);
}
System.out.println(Thread.currentThread().getName()+"卖出第"+(ticket--)+"号票");
try {
Thread.sleep(100);
notifyAll(); //唤醒其他售票窗口
wait();
}catch (Exception e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
SellingTickets st = new SellingTickets();
Thread t1 = new Thread(st,"买票窗口1:");
Thread t2 = new Thread(st,"买票窗口2:");
Thread t3 = new Thread(st,"买票窗口3:");
Thread t4 = new Thread(st,"买票窗口4:");
Thread t5 = new Thread(st,"买票窗口5:");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}