ReentrantReadWriteLock样例代码
时间: 2023-07-03 09:30:58 浏览: 56
以下是一个使用ReentrantReadWriteLock的样例代码:
```java
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class ReadWriteLockExample {
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private int value;
public int getValue() {
lock.readLock().lock();
try {
return value;
} finally {
lock.readLock().unlock();
}
}
public void setValue(int value) {
lock.writeLock().lock();
try {
this.value = value;
} finally {
lock.writeLock().unlock();
}
}
}
```
在此示例中,我们定义了一个ReadWriteLockExample类,其中包含一个ReentrantReadWriteLock和一个int值。 getValue()方法获取锁的读锁,以读取值,而setValue()方法获取锁的写锁,以设置值。
当一个线程获取了读锁时,其他线程也可以获取读锁,但是写锁会被阻塞。当一个线程获取了写锁时,其他线程无法获取读锁或写锁,直到写锁被释放。
这个代码可以保证数据的线程安全,同时也保证了读写操作的并发性。