gpt4 book ai didi

java - 如果超过 1 个线程访问,Spring @Cacheable 是否会阻塞?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:42 25 4
gpt4 key购买 nike

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

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

这是否意味着 t2 将在大约 5 分钟内不会访问数据,因为 t1 已经开始了 @Cacheable 操作并且它应该在 5 分钟内完成(因为它已经运行了 5 分钟)还是 t2 会调用对 @Cacheable 的新调用?

最佳答案

如果第一次执行的结果没有被缓存,第二次调用将继续。

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

关于java - 如果超过 1 个线程访问,Spring @Cacheable 是否会阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893022/

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