有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用ReadWriteLock

我有一个缓冲池,可以存储很多对象。为了防止不同线程以相同的速度写入同一对象,为了提高效率,我使用ReadWriteLock。但我不太确定它是如何工作的。在我找到想要访问的对象后

if(perm.equals(Permissions.READ_ONLY)) {                    
  readLock.lock();
} else if(Permissions.READ_WRITE) {                 
  writeLock.lock(); 
}
return the object I want to access

系统如何知道程序试图访问并锁定哪个对象? 还是我的语法错了?帮助谢谢


共 (1) 个答案

  1. # 1 楼答案

    系统不知道你想锁定什么。如果要对一系列项使用锁对象,则必须对每个项使用锁,或者对整个对象集使用一个锁(这可能是一个很大的瓶颈)。这是一个使用单个锁同步访问的示例

    // You'll need to create this somewhere else, in your constructor
    // or some other routine that gets called once.
    ReentrantLock lock = new ReentrantLock(); 
    
    
    // Then when you want to access:
    lock.lock();
    try {
     ... // do stuff with the data
    }
    finally {
      lock.unlock();
    }