gpt4 book ai didi

java - spring异步传递对象线程对以前的更新是安全的

转载 作者:行者123 更新时间:2023-11-30 07:23:59 24 4
gpt4 key购买 nike

我们使用的是spring异步框架,示例代码如下,如果Entity对象是可变的并且在调用put之前已经更新,JVM会保证put会看到变化吗?

@Async("daoExecutor")
@Repository
public class GenericDaoImpl implements GenericDao {
public CompletableFuture<Entity> put(Entity e) {
}
}

最佳答案

是的。

@Async 或多或少是通过将实际方法调用包装在 Callable 中并将该可调用提交给 ThreadPoolExecutor 来实现的。该提交是通过 BlockingQueue 完成的。 JDK(Spring 使用的)提供的默认 BlockingQueue 实现都是线程安全的。添加到队列发生在从队列中取出之前。

因此,您在调用 put(并添加到队列)之前所做的任何更改都将在 put 中可见(这在从队列中获取之后发生)。

关于java - spring异步传递对象线程对以前的更新是安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083262/

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