设计一个多线程的程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况Java
时间: 2024-03-26 21:35:52 浏览: 74
好的,下面是一个简单的Java多线程程序,用于模拟5个售票点售票的情况:
```java
public class TrainTicketSimulator {
static int tickets = 100; // 初始火车票数量
public static void main(String[] args) {
// 创建5个售票点线程
for (int i = 1; i <= 5; i++) {
new Thread(new TicketSeller(i)).start();
}
}
static class TicketSeller implements Runnable {
int id; // 售票点编号
public TicketSeller(int id) {
this.id = id;
}
public void run() {
while (true) {
synchronized (TrainTicketSimulator.class) { // 使用类锁保证线程安全
if (tickets > 0) {
System.out.println("售票点" + id + "售出了第" + tickets + "张火车票");
tickets--;
} else {
System.out.println("售票点" + id + "已售完所有火车票");
break;
}
}
}
}
}
}
```
这个程序中,我们使用了一个类锁来保证线程安全,确保每个售票点在售票时不会出现互相抢票的情况。每个售票点线程不断地循环售票,直到所有火车票都被售出。当火车票售完后,线程退出循环。
阅读全文