java多线程售票窗口
时间: 2023-04-03 08:05:31 浏览: 125
如何实现?
Java 多线程售票窗口可以通过创建多个线程来模拟多个售票窗口,每个线程负责售卖一定数量的票。为了避免出现线程安全问题,可以使用 synchronized 关键字来保证同一时间只有一个线程可以访问共享资源(即票数变量)。具体实现可以参考以下代码:
```
public class TicketSeller implements Runnable {
private int tickets = 100; // 总票数
@Override
public void run() {
while (tickets > 0) {
synchronized (this) { // 加锁
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + "售出第" + tickets + "张票");
tickets--;
}
}
}
}
public static void main(String[] args) {
TicketSeller seller = new TicketSeller();
new Thread(seller, "窗口1").start();
new Thread(seller, "窗口2").start();
new Thread(seller, "窗口3").start();
}
}
```
以上代码创建了一个 TicketSeller 类,实现了 Runnable 接口,重写了 run() 方法。在 run() 方法中,使用 while 循环不断售票,当票数为 0 时停止售票。在售票过程中,使用 synchronized 关键字对共享资源进行加锁,保证同一时间只有一个线程可以访问。在 main() 方法中,创建了三个线程模拟三个售票窗口,分别启动这三个线程。
阅读全文