zoukankan      html  css  js  c++  java
  • ReentrantReadWriteLock总结

    ReentrantReadWriteLock的流程的一些特性;

    // ReentrantReadWriteLock.WriteLock.lock()特性:
    • 已持有读锁的线程不能再持有写锁;
    • 已持有写锁的线程可以再持有写锁,这和ReentrantLock的重入锁概念是一致的;
    • 已持有读锁的线程,其他线程是不能持有写锁的;
    • 已持有写锁的线程,其他线程是不能持有写锁的;

    // ReentrantReadWriteLock.ReadLock.lock()特性:
    • 已持有写锁的线程,其他线程是不能持有读锁的;
    • 已持有写锁的线程可以再持有读锁,这里我们称之为锁降级;
    • 已持有读锁的线程可以再持有读锁,这和ReentrantLock的重入锁概念是一致的;
    • 已持有读锁的线程,其他线程也可以持有读锁的;

    3、然而将上面的WriteLockReadLock特性进行合并为:
    • 已持有写锁的线程可以再持有写锁,这和ReentrantLock的重入锁概念是一致的;
    • 已持有写锁的线程,其他线程是不能持有读锁、写锁的;
    • 已持有写锁的线程可以再持有读锁,这里我们称之为锁降级;

    • 已持有读锁的线程可以再持有读锁,这和ReentrantLock的重入锁概念是一致的;
    • 已持有读锁的线程,其他线程也可以持有读锁的;
    • 已持有读锁的线程,其他线程(同时也包括已持有读锁的线程)是不能持有写锁的;

    4、排除可重入的特性,再精炼合并特性为:
    • 写锁会排斥读锁、写锁,但是读锁会阻塞写锁;
    • 写锁可以降级为读锁,但读锁不能升级为写锁; 

  • 相关阅读:
    tomcat禁止查看文件目录
    jsp中的时间操作
    用 iframe 解决下拉框与层之冲突
    不要把灯泡放进口中
    一个高效简洁的Struts分页方法
    非常Cool的 网页特效(背景藏,alert样式)
    让table中的英文和数字换行
    隐藏多行文本框的滚动条
    tomcat默认首页设置
    如何利用回车来进行焦点转移呢
  • 原文地址:https://www.cnblogs.com/heqiyoujing/p/11145196.html
Copyright © 2011-2022 走看看