重入锁是什么意思,锁降级有什么好处

funfeibaba 2012-11-09 08:21:47
重入锁是什么意思,锁降级有什么好处???
...全文
397 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
funfeibaba 2012-11-10
  • 打赏
  • 举报
回复
示例用法。下面的代码展示了如何利用重入来执行升级缓存后的锁降级(为简单起见,省略了异常处理): class CachedData { 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();", 可以吗
Jordan37 2012-11-09
  • 打赏
  • 举报
回复
重入锁的概念是:自己可以再次获得自己的内部锁;重进入的实现是通过每个锁关联一个请求计数和一个占有它的线程,当计数为0时,认为锁是未被占有的,线程请求一个未被占有的锁时,jvm将记录锁的占有者,并将请求计数置为一,如果同一个线程再次请求,计数器将递增,每次占用线程退出同步块,计数器值将递减,直到计数器为0,锁释放 锁降级的好处应该是保证不死锁
龙四 2012-11-09
  • 打赏
  • 举报
回复
重入锁就是一个线程可以获取同一个锁多次 降级锁应该指的是写锁可以降级为读锁

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧