需求:
某电影院有一部大片上映,共100张票,而它有三个窗口卖票,请设计一个程序模拟电影院售票。
(在控制台显示每一张票在哪个窗口被卖出,并在最后显示每个窗口卖出票的总和)
//SellTicket.java
package Ticket;
public class SellTicket implements Runnable {
private int tickets = 1;
public int a = 0, b = 0, c = 0;
private Object obj = new Object();
@Override
public void run() {
synchronized (obj) {
while (tickets < 101) {
System.out.println(Thread.currentThread().getName() + "窗口卖出第" + tickets + "张票");
if (Thread.currentThread().getName().equals("Num1")) {
a++;
} else if (Thread.currentThread().getName().equals("Num2")) {
b++;
} else {
c++;
}
tickets++;
if (tickets==101){
System.out.println(a+","+b+","+c);
}
}
}
}
}
//SellTicketDemo.java
package Ticket;
public class SellTicketDemo {
public static void main(String[] args) {
SellTicket st = new SellTicket();
Thread t1 = new Thread(st,"Num1");
Thread t2 = new Thread(st,"Num2");
Thread t3 = new Thread(st,"Num3");
t1.start();
t2.start();
t3.start();
}
}