我是让你举一个共享锁的Java例子
时间: 2024-04-10 12:28:22 浏览: 89
线程共享锁 TMonitor 示例
非常抱歉之前的回答误导了您。下面是一个使用 Java 中的共享锁(ReentrantReadWriteLock)的例子:
```java
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class SharedLockExample {
private static final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private static int counter = 0;
public static void main(String[] args) {
Thread writerThread = new Thread(SharedLockExample::writeData);
Thread readerThread = new Thread(SharedLockExample::readData);
writerThread.start();
readerThread.start();
}
public static void writeData() {
lock.writeLock().lock(); // 获取独占写锁
try {
// 写入数据
counter++;
System.out.println("Writer thread wrote data: " + counter);
} finally {
lock.writeLock().unlock(); // 释放写锁
}
}
public static void readData() {
lock.readLock().lock(); // 获取共享读锁
try {
// 读取数据
System.out.println("Reader thread read data: " + counter);
} finally {
lock.readLock().unlock(); // 释放读锁
}
}
}
```
在上面的例子中,我们使用了 ReentrantReadWriteLock 类来创建一个共享锁。其中,writeData 方法获取独占写锁并进行写操作,而 readData 方法获取共享读锁并进行读操作。这样可以实现多个线程同时进行读操作,但只有一个线程能进行写操作。
希望这个例子能帮助您理解共享锁的概念。如果您有任何其他问题,请随时提问。
阅读全文