用Java语言完成一个售票工作,需要三个窗口共同售卖1000张票
时间: 2024-04-14 21:27:43 浏览: 244
使用多线程技术,模拟通过四个窗口卖出1000张火车票的功能。
以下是一个简单的 Java 代码示例,用于模拟三个窗口共同售卖1000张票:
```java
public class TicketSeller implements Runnable {
private static final int TOTAL_TICKETS = 1000;
private static final int TICKETS_PER_WINDOW = TOTAL_TICKETS / 3;
private static int availableTickets = TOTAL_TICKETS;
private final String windowName;
public TicketSeller(String windowName) {
this.windowName = windowName;
}
@Override
public void run() {
while (availableTickets > 0) {
synchronized (TicketSeller.class) {
if (availableTickets > 0) {
System.out.println(windowName + "售出第 " + (TOTAL_TICKETS - availableTickets + 1) + " 张票");
availableTickets--;
}
}
// 模拟售票过程中的其他操作
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Thread window1 = new Thread(new TicketSeller("窗口1"));
Thread window2 = new Thread(new TicketSeller("窗口2"));
Thread window3 = new Thread(new TicketSeller("窗口3"));
window1.start();
window2.start();
window3.start();
}
}
```
在这个示例中,我们创建了一个名为 `TicketSeller` 的类来表示售票员。每个窗口都是一个 `TicketSeller` 实例,通过实现 `Runnable` 接口并在 `run` 方法中定义售票过程。我们使用静态变量 `availableTickets` 来表示剩余可售的票数,并使用 `synchronized` 关键字来确保在售票过程中的线程安全。
在 `run` 方法中,售票员每次售出一张票后,将剩余票数减一,并输出相应的售票信息。为了模拟售票过程中的其他操作,我们在每次售票后使用 `Thread.sleep` 方法暂停 10 毫秒。
在 `main` 方法中,我们创建了三个窗口的线程,并启动它们。每个窗口将独立地执行售票过程,直到所有票都售完为止。
请注意,这只是一个简单的示例,用于演示多个窗口共同售卖票的基本原理。在实际应用中,可能需要更复杂的逻辑和线程同步机制来处理并发访问和资源竞争的问题。
阅读全文