使用继承 Thread 的方式,实现三个窗口卖一百张票
时间: 2024-10-17 16:10:27 浏览: 21
Python利用多线程同步锁实现多窗口订票系统(推荐)
在 Java 中,我们可以使用继承自 `Thread` 类的方式,创建多个线程来模拟多个窗口同时销售票的情况。假设我们有一个名为 `TicketWindow` 的抽象类,它代表一个售票窗口,然后有三个具体的子类 `WindowA`, `WindowB`, 和 `WindowC` 实现这个抽象类。这里是一个简单的示例:
```java
// 抽象类 TicketWindow 定义了卖出票的基本功能
public abstract class TicketWindow implements Runnable {
private int tickets = 100;
public void startSale() {
new Thread(this).start();
}
@Override
public void run() {
while (tickets > 0) {
sellTicket();
}
System.out.println("窗口已售完!");
}
// 子类需实现的卖票方法
protected abstract void sellTicket();
}
// 具体子类,每个窗口有不同的卖票策略
class WindowA extends TicketWindow {
@Override
protected void sellTicket() {
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + " 窗口卖出一张票");
tickets--;
} else {
break;
}
}
}
class WindowB extends TicketWindow {
@Override
protected void sellTicket() {
// ... 这里可以有不同的卖票策略,比如随机减少库存
}
}
class WindowC extends TicketWindow {
@Override
protected void sellTicket() {
// ... 另一种卖票策略
}
}
public class Main {
public static void main(String[] args) {
WindowA windowA = new WindowA();
WindowB windowB = new WindowB();
WindowC windowC = new WindowC();
windowA.startSale(); // 开始窗口A的售票
windowB.startSale(); // 同样启动窗口B和窗口C的售票
}
}
```
在这个例子中,`main` 函数中创建了三个窗口实例,并分别启动它们。每个窗口都在自己的线程中独立地卖票。当所有窗口的票售完后,会打印相应的消息。
阅读全文