gpt4 book ai didi

java - 了解@service 和竞争条件

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:21 25 4
gpt4 key购买 nike

我用 @service 注释一个类。我的@controller类将通过@autowired调用@service。任何人都可以在 @service 类、方法中预见到任何竞争条件?

如果我在@service中有方法

public boolean dosomethinglongtime(){
boolean passed=false;
//write to database...
//do very long task;
//if all task success, passed=true;

return passsed
}

两个不同的用户调用 Controller 并调用此方法是否有可能导致 dosomethinglongtime() 内传递的 boolean 值出现竞争条件?

好吧,这只是一个疑问,到目前为止还没有发生竞争条件,我只是想澄清这个疑问。谢谢你

最佳答案

不,该代码中不会出现任何竞争条件(从 Java 的角度来看),因为 boolean 值的范围仅限于方法调用。如果 boolean 值是实例或类属性,那么您可能会遇到并发问题。理想情况下,您的服务应该是无状态的,以避免竞争条件,如果不是,您需要使类同步或使用concurrent package中的深奥内容。 .

如果你想阻止2个用户在数据库中写入/更新相同的记录,你需要使用锁定机制,例如optimistic locking ,或pessimistic locking 。这些链接指向 hibernate 文档,但大多数 ORM 支持这两种锁定机制。

关于java - 了解@service 和竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232260/

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