gpt4 book ai didi

java - 如何允许从同步结构中同时读取?

转载 作者:行者123 更新时间:2023-11-29 04:16:18 25 4
gpt4 key购买 nike

假设我有一个像这样的简单缓存实现:

class Cache<Item> {
private InternalStorage internalStorage;

public synchronized Collection<Item> find(String query) {
// find Items from internalStorage
}

public synchronized void add(Collection<Item> items) {
// Add items to internalStorage
}
}

我需要防止:

  1. 同时写入 internalStorage。即,不能同时调用 add
  2. 读取与写入同时发生。即不能同时调用 findadd

上面的实现满足了这些安全要求,但是,同时调用 find 并没有什么坏处,因为它不会更改数据。我怎样才能允许这样做,同时仍然保持结构线程安全?

最佳答案

如果您在这里使用 ReentrantReadWriteLock 而不是 synchronized,这似乎很容易做到。

关于java - 如何允许从同步结构中同时读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52148977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com