gpt4 book ai didi

java - 并发和 CacheLoader.load()

转载 作者:搜寻专家 更新时间:2023-11-01 01:53:44 25 4
gpt4 key购买 nike

我应该同步 CacheLoader.load() 中的代码吗?

我有这样的代码:

final Calculator calculator = new Calculator();

final LoadingCache<Key, Value> cache = CacheBuilder.newBuilder().build(new CacheLoader<Key, Value>(){
@Override
public Value load(final Key key) throws Exception {
return calculator.calc(key);
}} );

如果缓存需要从两个不同的线程加载两个不同键的值,我是否需要担心计算器对象中的线程干扰? IE。我应该将我的 Calculator.calc() 方法声明为同步的(或者做其他事情来确保线程安全)吗?

编辑

为了清楚起见,我特别询问有关 Guava 缓存的问题:http://code.google.com/p/guava-libraries/wiki/CachesExplained

最佳答案

这取决于 load 方法中操作的线程安全性。它可以针对不同的键同时执行。因此,如果操作不是线程安全的,则应该以某种方式实现(同步是最简单的选项)。

因此,如果 calculator.calc(key) 不是线程安全的,请同步它。如果是,请不要。

关于java - 并发和 CacheLoader.load(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212416/

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