重入锁是什么意思,锁降级有什么好处???
解决方案 »
- java读取文件问题
- java大数据量的分布式处理
- 一道关于运行时异常的题
- 把数据库中的blob字段(图片或视频)读出来并显示!! 搞不定啊!!?(有代码)
- java有没有导入dbf文件的包,就像导入excel表格一样要包
- 求java代码产生日期+3位流水的代码
- 请问如何编程发送一个ARP报文?
- 求助,和JNI相关,Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x80C1548
- Applet中绘制矩形的问题
- 为什么Applet在读取文件时,会出现安全异常?
- Java正则表达式2
- 我的坦克为什么一闪一闪的?哪位给看一下。。Thank yoy
锁降级的好处应该是保证不死锁
Object data;
volatile boolean cacheValid;
ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); void processCachedData() {
rwl.readLock().lock();
if (!cacheValid) {
// Must release read lock before acquiring write lock
rwl.readLock().unlock();
rwl.writeLock().lock();
// Recheck state because another thread might have acquired
// write lock and changed state before we did.
if (!cacheValid) {
data = ...
cacheValid = true;
}
// Downgrade by acquiring read lock before releasing write lock
rwl.readLock().lock();
rwl.writeLock().unlock(); // Unlock write, still hold read
} use(data);
rwl.readLock().unlock();
}
}
"// Downgrade by acquiring read lock before releasing write lock
rwl.readLock().lock();
rwl.writeLock().unlock(); // Unlock write, still hold read",
为什么这样写,改成
"// Downgrade by acquiring read lock before releasing write lock
rwl.writeLock().unlock();
rwl.readLock().lock();",
可以吗