创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作,直到 直到全部售罄停止。 java 代码
时间: 2024-10-18 18:12:23 浏览: 24
在Java中,你可以创建一个名为`Station`的类,它继承自`Thread`并重写`run()`方法来实现售票功能。这里是一个简单的示例:
```java
import java.util.ArrayList;
import java.util.List;
class Ticket {
private int remaining; // 票的数量
public Ticket(int initialStock) {
this.remaining = initialStock;
}
public boolean isSoldOut() {
return remaining == 0;
}
}
class Station extends Thread {
private List<Ticket> tickets; // 存放票的列表
private final int ticketType; // 票的种类
public Station(List<Ticket> tickets, int ticketType) {
this.tickets = tickets;
this.ticketType = ticketType;
start(); // 启动线程立即开始售票
}
@Override
public void run() {
while (!tickets.stream().allMatch(Ticket::isSoldOut)) { // 当所有类型的票都没了才退出
for (Ticket t : tickets) {
if (!t.isSoldOut()) {
t.remaining--;
System.out.println("卖出了一张" + ticketType + "票,剩余:" + t.getRemaining());
if (t.isSoldOut()) {
System.out.println("所有" + ticketType + "票已售完");
}
} else {
break; // 如果某一种票卖完了就不再继续售票
}
}
try {
Thread.sleep(1000); // 模拟售票操作的速度
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
// 创建一些票
List<Ticket> stationTickets = new ArrayList<>();
stationTickets.add(new Ticket(10)); // 示例:10张票
// 创建站台实例并启动
Station station = new Station(stationTickets, 1); // 售票类型1
station.setName("票务站台"); // 设置线程名称
station.start();
}
}
```
在这个例子中,`Station`类会在后台持续运行,卖出票直到所有票售罄。每个`Ticket`对象代表一种类型的票,它们有自己的库存。线程通过检查每种票是否售罄来控制售票过程。
阅读全文