Java 多线程售票系统:模拟电影院窗口售票
以下是一个可能的解决方案,使用 Java 多线程模拟电影院 3 个窗口同时售票:
public class TicketSeller implements Runnable {
private String windowId;
private int ticketCount;
public TicketSeller(String windowId) {
this.windowId = windowId;
this.ticketCount = 0;
}
public void run() {
while (ticketCount < 10) {
ticketCount++;
System.out.println(windowId + '售卖第' + ticketCount + '张票');
try {
Thread.sleep(1000); // 模拟售票过程,每张票售卖需要 1 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(windowId + '已售完所有电影票');
}
public static void main(String[] args) {
TicketSeller seller1 = new TicketSeller('A1');
TicketSeller seller2 = new TicketSeller('A2');
TicketSeller seller3 = new TicketSeller('A3');
Thread thread1 = new Thread(seller1);
Thread thread2 = new Thread(seller2);
Thread thread3 = new Thread(seller3);
thread1.start();
thread2.start();
thread3.start();
}
}
在这个程序中,我们定义了一个 TicketSeller 类实现了 Runnable 接口,每个窗口都是一个 TicketSeller 对象。在 run 方法中,每个窗口售卖电影票的过程是一个循环,每次循环售卖一张票并打印售票信息,然后休眠 1 秒模拟售票过程。当售票数量达到 10 张时,循环结束。
在 main 方法中,我们创建了 3 个 TicketSeller 对象,并用 Thread 类创建了 3 个线程分别执行每个窗口的售票任务。当程序运行时,每个窗口都在独立的线程中进行售票操作,并打印售票信息。
原文地址: https://www.cveoy.top/t/topic/oVO8 著作权归作者所有。请勿转载和采集!