请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Spring Controller相关的问题

这里的controller默认是单例的,是否说明每个request过来,开启的对应线程,都是共享这一个controller对应的成员对象?那这样的话,除了在conteoller方法中new出来的本地对象(比如数据库连接之类的)其他的controller所拥有的对象是否都要考虑线程安全的情况?

正在回答

1回答

Jimin 2019-02-25 00:16:15

你好,如果是static域的对象,才是需要考虑线程安全问题。单独一个方法内部new出来的对象,且没有传出方法外,是不涉及线程安全问题的。

1 回复 有任何疑惑可以回复我~
  • 提问者 高秋 #1
    谢谢老师。但如果是controller定义的成员对象,但不是static的,这个对象传入controller方法(方法外传入进来的),是否也要考虑并发安全?
    
    比如,这里的v是否会被并发访问?
    
    @bean
    Class controller {
         private Vector v
    
          Method(v){}
    }
    回复 有任何疑惑可以回复我~ 2019-02-25 00:45:45
  • Jimin #2
    如果这个v可能被更新,就需要考虑线程安全的,这个v像极了我们代码里的自动注入的bean,自动注入的bean因为我们不去修改,因此虽然多线程共享但并不会有线程安全问题(本质上是无状态与有状态的区别)
    回复 有任何疑惑可以回复我~ 2019-02-25 08:56:27
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信