gpt4 book ai didi

java - 放入 session 中并具有动态 getter 的对象是否应该是线程安全的

转载 作者:行者123 更新时间:2023-12-02 03:58:43 25 4
gpt4 key购买 nike

考虑在 session 中设置的User对象。

其中一个对象属性是动态设置的,如下所示:

public class User() {
private String FirstName;
private String LastName;
private Car car;
//Here we have the service object, this could be injected with spring or JEE
private CarServices carServices;

public Car getCar() {
//If the car is not fetched yet, go on and get it from your service
if (car == null) {
car = carServices.getCarFromDB(...)
}
return car;
}

}

应该同步getCar()吗?!

如果您想了解有关此设计的更多信息,请参阅Design a Java POJO with lazy loading property

最佳答案

简短回答:是的。如果同一用户(拥有 session )同时发出多个请求,则 session 中的 User 对象可能会被多个线程访问。

如果您不介意多次加载汽车,您可以使 car volatile :

private volatile Car car;

或者,您当然可以同步整个方法。在这种情况下并行访问不太可能,因此无论如何它都不会对性能产生重大影响。

关于java - 放入 session 中并具有动态 getter 的对象是否应该是线程安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35151070/

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