编写一个java多线程程序,模拟火车售票窗口的售票功能,创建线程12通过这个两个线程共同售出100张票,
时间: 2023-10-25 15:15:04 浏览: 134
好的,下面是一个简单的 Java 多线程程序,可以模拟火车售票窗口的售票功能,创建 12 个线程共同售出 100 张票:
```java
public class TrainTicket implements Runnable {
private int ticketCount = 100;
@Override
public void run() {
while (ticketCount > 0) {
synchronized (this) { // 加锁
if (ticketCount > 0) {
System.out.println(Thread.currentThread().getName() + "卖出了第" + (101 - ticketCount) + "张票");
ticketCount--;
}
}
}
}
public static void main(String[] args) {
TrainTicket trainTicket = new TrainTicket();
for (int i = 1; i <= 12; i++) {
new Thread(trainTicket, "窗口" + i).start();
}
}
}
```
这个程序中,我们定义了一个 `TrainTicket` 类,实现了 `Runnable` 接口,重写了 `run()` 方法,通过 `synchronized` 关键字加锁,保证在同一时间只有一个线程可以访问 `ticketCount` 变量,防止出现多线程同时售出同一张票的情况。在 `main()` 方法中,创建了 12 个线程,并启动了它们。每个线程代表一个售票窗口,不断地售出火车票,直到票已售完。
阅读全文