ReentrantLock 如何锁变量
时间: 2023-10-04 14:07:11 浏览: 76
`ReentrantLock`是Java提供的一个可重入锁,可以用来对代码块进行加锁。相比于`synchronized`关键字,`ReentrantLock`提供了更多的锁定机制,例如公平锁、可中断锁等,可以更加灵活地控制锁的行为。使用`ReentrantLock`锁变量的方式如下:
```
import java.util.concurrent.locks.ReentrantLock;
public class MyClass {
private final ReentrantLock lock = new ReentrantLock();
private int count;
public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
public void decrement() {
lock.lock();
try {
count--;
} finally {
lock.unlock();
}
}
}
```
在上面的例子中,我们创建了一个`ReentrantLock`对象`lock`,并在`increment()`和`decrement()`方法中使用该锁来对`count`变量进行保护。在对`count`进行操作前,我们先调用`lock()`方法获取锁,然后在`try`块中执行对`count`的操作,最后在`finally`块中调用`unlock()`方法释放锁。
需要注意的是,在使用`ReentrantLock`时,应该遵循一定的规则,例如在获取锁后一定要释放锁,避免出现死锁等问题。同时,在高并发场景下,应该尽量减少对锁的竞争,从而提高程序的性能。
阅读全文