java 电影院座位号购买怎么加锁
时间: 2024-10-18 07:13:00 浏览: 29
基于Java的电影院购票系统
5星 · 资源好评率100%
在Java中,为了防止多个线程同时修改电影院座位号购买状态,可以使用synchronized关键字、Lock接口或者ReentrantLock类来实现线程同步。这里我们演示如何使用`synchronized`关键字:
```java
public class MovieSeat {
private int[] seats;
private final Object lock = new Object(); // 锁对象
public MovieSeat(int capacity) {
this.seats = new int[capacity];
}
public synchronized void buySeat(int seatNumber) {
if (seatNumber >= 0 && seatNumber < seats.length && seats[seatNumber] == 0) {
seats[seatNumber] = 1; // 座位被占用
System.out.println("座号 " + seatNumber + " 已经被购买");
} else {
System.out.println("错误的座号或座位已售罄");
}
}
}
```
在这个例子中,`buySeat`方法前加上`synchronized`关键字,意味着在同一时刻只有一个线程能进入这个方法。如果需要更高级别的锁控制,可以使用`lock.lock()`和`lock.unlock()`来手动获取和释放锁。
阅读全文