zoukankan      html  css  js  c++  java
  • ReentrantReadWriteLock类和ReentrantLock类的区别

    Java.util.concurrent.locks包定义了两个锁类,ReentrantLock和ReentrantReadWriteLock类。

    当有很多线程都从某个数据结构中读取数据而很少有线程对其进行修改时,后者就很有用了。在这种情况下,允许读取器线程共享访问是合适的。当然,写入器线程依然必须是互斥访问的

    下面是使用读/写锁的必要步骤:

    (1) 创建一个ReentrantReadWriteLock对象

    [java] view plain copy
     
    1. private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();  

    (2)抽取读锁和写锁:

    [java] view plain copy
     
    1. private Lock readLock = rwl.readLock();//得到一个可被多个读操作共用的读锁,但它会排斥所有写操作  
    2. private Lock writeLock = rwl.writeLock();//得到一个写锁,它会排斥所有其他的读操作和写操作  

    (3) 对所有访问者加读锁

    [java] view plain copy
     
    1. public double getTotalBalance(){  
    2.     readLock.lock();  
    3.     try{...};  
    4.     finally{readLock.unlock();}  
    5. }  


    对所有修改者加写锁

    [java] view plain copy
     
      1. public void transfer(){  
      2.     writeLock.lock();  
      3.     try{...};  
      4.     finally{writeLock.unlock();}  
      5. }  
  • 相关阅读:
    c++ 与 c 的区别
    c++ 查看程序运行时间
    串口阻塞与非阻塞
    串口缓冲区
    马拉车算法
    printf 自加自减
    stack
    长度问题
    PCIE的内存地址空间、I/O地址空间和配置地址空间
    数组和指针
  • 原文地址:https://www.cnblogs.com/ruiati/p/6125459.html
Copyright © 2011-2022 走看看