当前位置:编程学习 > JAVA >>

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

重入锁是什么意思,锁降级有什么好处??? --------------------编程问答-------------------- 重入锁就是一个线程可以获取同一个锁多次

降级锁应该指的是写锁可以降级为读锁 --------------------编程问答-------------------- 重入锁的概念是:自己可以再次获得自己的内部锁;重进入的实现是通过每个锁关联一个请求计数和一个占有它的线程,当计数为0时,认为锁是未被占有的,线程请求一个未被占有的锁时,jvm将记录锁的占有者,并将请求计数置为一,如果同一个线程再次请求,计数器将递增,每次占用线程退出同步块,计数器值将递减,直到计数器为0,锁释放
锁降级的好处应该是保证不死锁 --------------------编程问答-------------------- 示例用法。下面的代码展示了如何利用重入来执行升级缓存后的锁降级(为简单起见,省略了异常处理): 

 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();",
 可以吗
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,