gpt4 book ai didi

java - Guava:Cacheloader.load() 是如何工作的

转载 作者:行者123 更新时间:2023-12-02 04:30:14 25 4
gpt4 key购买 nike

假设我有两个线程,线程 A 和线程 B,以及 LoadingCache<String, String>该文件为空,且有效期为 10 分钟。一个CacheLoader用于构建LoadingCache它所做的一切都是从数据库中检索。

假设 LoadingCache仍然是空的并且 LoadingCache.get(key)由线程 A 和线程 B 同时调用。请问CacheLoader.load()方法被调用两次?

根据我在文档中读到的内容:

If another call to get(K) or getUnchecked(K) is currently loading the value for key, simply waits for that thread to finish and returns its loaded value. Note that multiple threads can concurrently load values for distinct keys.

验证一下我的理解,如果线程A和线程B之间有5ms的差异,那么线程A会自动锁定CacheLoader.load()方法,加载值,然后线程 B 只获取加载的值。这样,就不需要同步了。这是正确的吗?

最佳答案

不,load 不会被调用两次;其中一个将获胜,并且与第二种情况发生相同的事情,即第二个线程等待直到第一个线程计算该值,然后获取该值,不需要额外的同步。

关于java - Guava:Cacheloader.load() 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575598/

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