我不太确定该怎么做……所以我可能需要几次尝试才能正确回答这个问题。我有一个用于缓存方法结果的注释。我的代码现在是一个私有分支,但我正在处理的部分从这里开始: https ://code.google.com/p/cache4guice/source/browse/trunk/src/org/cache4guice/aop/CacheInterceptor .java#46
我已经注释了一个我想要缓存的方法,它运行一个非常慢的查询,有时需要几分钟才能运行。问题是,我的异步 Web 应用程序不断吸引新用户来询问相同的数据。但是,getSlowData() 方法尚未完成。
所以是这样的:
@Cached
public getSlowData() {
...
}
在拦截器内部,我们检查缓存并发现它没有被缓存,这将我们传递到:
return getResultAndCache(methodInvocation, cacheKey);
我从来没有对并发的整个概念感到满意。我认为我需要标记给定 getSlowData() 的 getResultAndCache() 方法已经启动,后续请求应该等待结果。
感谢您的任何想法或建议!