发布网友 发布时间:2022-04-24 06:12
共3个回答
热心网友 时间:2023-10-08 16:05
读写锁实际上分为两种情形。读锁和写锁。多个线程准备进入临界区时,加读锁不会阻塞,此时线程都能够进入临界区。当有线程在进入临界区时加了写锁,那么此时写锁会与读锁互斥,如果有读锁存在,则加写锁线程阻塞。如果没有读锁存在,线程加写锁完成,并进入临界区。 读写锁可以应付多读少写的场景,对于多读少写的场景,如果使用排他锁,显然所有读都不能并发完成,效率极低。而使用读写锁,所有写之间是不互斥的。
热心网友 时间:2023-10-08 16:05
这需要专业人士
热心网友 时间:2023-10-08 16:06
public class Service {
//ReadWriteLock接口是对读写锁的抽象,默认实现类ReentrantReadWriteLock
private final ReadWriteLock rWriteLock = new ReentrantReadWriteLock();
private final Lock rLock = rWriteLock.readLock();
private final Lock wLock = rWriteLock.writeLock();
public void read() {
rLock.lock();//申请锁
try {
//在这里读取操作
} catch (Exception e) {
e.printStackTrace();
} finally {
rLock.unlock();//释放锁
}
}
public void write() {
wLock.lock();
try {
//写操作
} catch (Exception e) {
e.printStackTrace();
} finally {
wLock.unlock();
}
}
}