写出锁定marry的两种方法
时间: 2024-10-27 11:05:53 浏览: 13
在Java中,有两种常见的同步机制可以用来锁定对共享资源如变量`Marry`的访问,防止并发修改导致的数据一致性问题:
1. **synchronized关键字**:
使用`synchronized`块或`synchronized(this)`方法可以使当前线程独占一段代码或特定的对象。例如:
```java
private Object marryLock = new Object();
public synchronized void lockMarry() {
// 临界区(需要同步的部分)
System.out.println("Acquiring marry lock...");
//...
}
```
在这个例子中,`lockMarry`方法会自动获取并释放`marryLock`的锁。
2. **ReentrantLock**:
Java并发包提供了一种更灵活的互斥锁实现`ReentrantLock`,它允许更精细的控制。创建`ReentrantLock`对象后,可以使用`lock()`方法获取锁,`unlock()`方法释放锁。示例如下:
```java
private ReentrantLock marryLock = new ReentrantLock();
public void lockMarry() {
marryLock.lock();
try {
// 临界区
System.out.println("Acquiring marry lock...");
//...
} finally {
marryLock.unlock();
}
}
```
这两种方法都能保证同一时间只有一个线程能够执行锁定代码段,从而避免了竞态条件。
阅读全文