多线程模拟卖票案例
某电影院正在上映某大片,共100张票,而他又3个售票窗口售票,请设计一个程序模拟该电影院售票。class SellTicket implements runnable {
private int tickets = 100;
public void run() {
while (true) {
if(tickets>0){
system.out.println(Thread.currentThread().getName()+"正在出售第"+(tickets--)+"张票");
}
}
}
}
public class SellTicketDemo {
SellTicket st = new SellTicket();
Thread t1 = new Thread(st,"窗口1");
Thread t2 = new Thread(st,"窗口2");
Thread t3 = new Thread(st,"窗口3");
t1.start();
t2.start();
t3.start();
}
输出结果:
窗口1正在出售第99张票
窗口1正在出售第98张票
窗口1正在出售第97张票
窗口1正在出售第96张票
窗口1正在出售第95张票
窗口1正在出售第94张票
窗口1正在出售第93张票
窗口1正在出售第92张票
窗口1正在出售第91张票
窗口2正在出售第100张票
窗口1正在出售第89张票
.
.
.
.
我的问题是为什么会是第99张票先卖出去而不是第一百张票?代码里tickets明明是从100开始执行的啊,那不是应该先卖第100张票?请各路大神帮帮忙解答下 不胜感激