我应该同步 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);
}} );
如果缓存需要从两个不同的线程加载两个不同键的值,我是否必须担心 Calculator 对象中的线程干扰?即我应该声明我的 Calculator.calc() 方法同步(或做其他事情来确保线程安全)?
编辑
为了清楚起见,我特别询问有关 Guava 中的缓存:http ://code.google.com/p/guava-libraries/wiki/CachesExplained