【发布时间】:2025-12-08 18:55:01
【问题描述】:
我有多个线程读取内存缓存。我想要的行为是每 5 分钟刷新一次缓存。问题是我不知道如何解决是如何强制只有一个线程更新缓存,而多个线程仍然可以读取缓存。
这是我拥有的代码的粗略示例:
public synchronized boolean readCache(int id) {
if (cache.hasExpired()) {
updateCache();
}
return cache.get(id);
}
这行得通。但是,它限制了在任何实例中只有单个线程可以读取缓存的实现。有没有更好的方法来做到这一点?
【问题讨论】:
-
尝试信号量/重入锁
标签: java multithreading