用java,使用多线程完成 三个窗口同时卖票
时间: 2023-06-24 13:06:11 浏览: 208
可以使用 Java 的多线程来实现三个窗口同时卖票的功能。以下是一个简单的示例代码:
```java
public class TicketSeller implements Runnable {
private static int tickets = 100; // 假设一共有100张票
private int windowId;
public TicketSeller(int windowId) {
this.windowId = windowId;
}
@Override
public void run() {
while (true) {
synchronized (TicketSeller.class) { // 使用 synchronized 保证线程安全
if (tickets > 0) {
System.out.println("窗口 " + windowId + " 卖出了第 " + tickets + " 张票");
tickets--;
} else {
System.out.println("窗口 " + windowId + " 已经卖完了所有的票");
break;
}
}
}
}
public static void main(String[] args) {
// 创建三个线程模拟三个窗口
Thread t1 = new Thread(new TicketSeller(1));
Thread t2 = new Thread(new TicketSeller(2));
Thread t3 = new Thread(new TicketSeller(3));
// 启动三个线程
t1.start();
t2.start();
t3.start();
}
}
```
在这个示例中,我们创建了一个 `TicketSeller` 类实现了 `Runnable` 接口,并定义了一个静态变量 `tickets` 来记录剩余的票数。在 `run()` 方法中,我们使用 `synchronized` 同步块来保证线程安全,当剩余票数大于0时,输出当前窗口卖出的票,并将 `tickets` 减1。当剩余票数小于等于0时,输出当前窗口卖完了所有的票,并跳出循环。
在 `main()` 方法中,我们创建了三个线程分别模拟三个窗口,并启动这三个线程,从而实现了三个窗口同时卖票的功能。
阅读全文