用java语言设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况。实验要求: - 要求打印出每个售票点所卖出的票号 - 各售票点不能售出相同票号的火车票
时间: 2024-05-13 10:18:48 浏览: 102
以下是一个简单的Java程序,模拟了5个售票点同时售票的情况:
```java
import java.util.concurrent.atomic.AtomicInteger;
public class TicketSellerSimulation {
private static final int TOTAL_TICKETS = 100;
private static final AtomicInteger ticketCounter = new AtomicInteger(0);
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
new Thread(new TicketSeller(i)).start();
}
}
public static class TicketSeller implements Runnable {
private int sellerId;
public TicketSeller(int sellerId) {
this.sellerId = sellerId;
}
@Override
public void run() {
while (true) {
int ticketNum = ticketCounter.incrementAndGet();
if (ticketNum > TOTAL_TICKETS) {
break;
}
System.out.println("Ticket seller " + sellerId + " sold ticket " + ticketNum);
try {
// 模拟售票过程中的延迟
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
```
程序中使用了`AtomicInteger`类来保证票号的唯一性,并且在每个售票点售出一张火车票后,模拟了售票过程中的延迟(通过`Thread.sleep()`方法实现)。运行程序后,可以看到每个售票点所卖出的票号,并且不会售出相同的火车票。
阅读全文