java三个窗口依次售火车票
时间: 2023-08-31 22:13:35 浏览: 79
你可以使用多线程来实现三个窗口依次售火车票。具体来说,可以创建一个 `Ticket` 类,该类包含一个静态变量 `ticketNum` 表示剩余的票数,以及一个 `sellTicket()` 方法用于售票。然后,可以创建三个线程分别表示三个窗口,每个线程中调用 `Ticket` 类的 `sellTicket()` 方法来售票。具体代码如下:
```
class Ticket {
public static int ticketNum = 100;
public synchronized static void sellTicket() {
if (ticketNum > 0) {
System.out.println(Thread.currentThread().getName() + "售出了第" + ticketNum + "张票");
ticketNum--;
} else {
System.out.println("票已售完");
}
}
}
public class Main {
public static void main(String[] args) {
Thread t1 = new Thread(() -> {
while (Ticket.ticketNum > 0) {
Ticket.sellTicket();
}
}, "窗口1");
Thread t2 = new Thread(() -> {
while (Ticket.ticketNum > 0) {
Ticket.sellTicket();
}
}, "窗口2");
Thread t3 = new Thread(() -> {
while (Ticket.ticketNum > 0) {
Ticket.sellTicket();
}
}, "窗口3");
t1.start();
t2.start();
t3.start();
}
}
```
在上面的代码中,`Ticket` 类的 `sellTicket()` 方法使用了 `synchronized` 关键字来实现同步,以确保每次只有一个线程可以访问该方法。在每个线程中,使用一个 `while` 循环来不断调用 `Ticket` 类的 `sellTicket()` 方法,直到所有的票都售出为止。这样,三个窗口就可以依次售火车票了。
阅读全文