用这个类
ReadWriteLock rwl = new ReentrantReadWriteLock();
rwl.writeLock().lock();// 取到写锁 写锁是互斥的
rwl.readLock().lock();// 取到读锁 读锁是可以并发读的.
下面是别人的例子.
class Data {
private int data;// 共享数据
private ReadWriteLock rwl = new ReentrantReadWriteLock();
public void set(int data) {
rwl.writeLock().lock();// 取到写锁
try {
System.out.println(Thread.currentThread().getName() + "准备写入数据");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.data = data;
System.out.println(Thread.currentThread().getName() + "写入" + this.data);
} finally {
rwl.writeLock().unlock();// 释放写锁
}
}
public void get() {
rwl.readLock().lock();// 取到读锁
try {
System.out.println(Thread.currentThread().getName() + "准备读取数据");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "读取" + this.data);
} finally {
rwl.readLock().unlock();// 释放读锁
}
}
}
ReentrantReadWriteLock使用示例
本文通过一个具体的示例介绍了ReentrantReadWriteLock的使用方法。该类提供了一种读写锁机制,允许多个线程同时进行读操作,但写操作具有排他性。示例展示了如何在多线程环境下安全地更新和读取共享数据。
173万+

被折叠的 条评论
为什么被折叠?



