在下面的代码中,如果我先调用getMyName()
,然后再调用getOthersName()
(当第一个请求仍在进行中时)。它会得到更新的名字吗?如果不是,为什么?
@RestController
public class controller {
@Autowired
Person person ;
@Autowired
private ApplicationContext ctx;
Integer i = 0;
@GetMapping("/getMyName")
public void getMyName(){
i = 200;
person.setFirstName("AAAAA");
for(int i = 0 ; i < 234562345; i++){
for (int j = 0 ; j < 234562345; j++){
for (int k = 0 ; k < 234562345; k++){
}
}
}
}
@GetMapping("/getOthersName")
public void getOthers(){
System.out.println(person.getFirstName());
Map test = ctx.getBeansOfType(Person.class);
System.out.println(test.size());
}
}
在下面的代码中,如果我先调用getMyName(),然后再调用getOthersName()(当第一个请求仍在进行中时)。它会得到更新的名字吗?如果不是,为什么? @RestController公共类...
是,多个线程可以写入该字段。这样的单例组件永远都不应包含特定于请求的状态。