Spring @Cacheable如果被多个线程访问,是否会阻塞?

蓝天 :

如果标记的方法@Cacheable需要10分钟才能完成,并且有两个线程t1,t2访问该方法。

t1在时间0访问(现在第一次运行缓存方法)t2在时间t1 + 5mins访问

这是否意味着自t1已经开始执行@Cacheable操作以来,t2将在大约5分钟内不访问数据,并且要在5分钟内完成操作(因为它已运行5分钟),还是@Cacheablet2将调用新的调用

巨人:

如果第一次执行的结果尚未缓存,则第二次调用将继续。

您应该理解这@Cacheable是围绕缓存的内容(而不是专门针对线程的执行上下文[嗯,有点;缓存仍然需要线程安全的))。在执行方法时,首先检查高速缓存,以查看键是否存在:如果t1需要一段时间才能完成,则其结果将不会被高速缓存,因此,并发执行将继续进行,而不考虑t1的执行

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章