编写一个多线程程序,模拟火车售票窗口的售票功能。创建线程1和线程2,通过这个线程共同售出100张票。用JAVA写出代码
时间: 2023-10-25 07:36:17 浏览: 147
好的,以下是代码实现:
```java
public class TicketSeller implements Runnable {
private int ticketCount = 100; // 总票数
private int soldCount = 0; // 已售票数
@Override
public void run() {
while (soldCount < ticketCount) {
synchronized (this) { // 对票数进行同步操作
if (soldCount < ticketCount) {
soldCount++;
System.out.println(Thread.currentThread().getName() + " 售出第 " + soldCount + " 张票");
}
}
try {
Thread.sleep(100); // 模拟售票过程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
TicketSeller ticketSeller = new TicketSeller();
Thread thread1 = new Thread(ticketSeller, "售票窗口1");
Thread thread2 = new Thread(ticketSeller, "售票窗口2");
thread1.start();
thread2.start();
}
}
```
在这个程序中,我们创建了一个 `TicketSeller` 类并实现了 `Runnable` 接口,代表了售票窗口的售票功能。其中,`ticketCount` 表示总票数,`soldCount` 表示已售票数。在 `run()` 方法中,我们使用 `synchronized` 对票数进行同步操作,并通过 `soldCount` 记录已售票数,直到售出所有的票。
在 `main()` 方法中,我们创建了两个线程并启动,模拟两个售票窗口共同售出100张票的过程。
阅读全文