springMVC里面是控制器,service,dao单例的问题

严小超 2014-04-02 11:21:06
springMVC里面,控制器,service,dao默认是单例的。所以用户访问,会造成线程并发读取的问题。我想知道,spring是怎么保证线程安全的?

比如,我一个service里面,有一个dao的引用(私有属性,spring注入进来),多个用户来请求这个(单例),怎么保证线程安全?

求大神指点。
...全文
831 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
别闹腰不好 2014-04-02
  • 打赏
  • 举报
回复
普通的操作如果数据不需要线程安全,那么不在类中声明全局的变量,就不会有线程安全问题,单例的也不会。
别闹腰不好 2014-04-02
  • 打赏
  • 举报
回复
有的方法是不需要线程安全的,所以就不需要做线程安全处理, 有的方法需要线程安全,比如售票,多个线程都在售票,售出一张就需要在总数中减掉一张,这个时候就需要线程安全,这个时候就可以把操作售票的方法用线程锁,或者隐式方式加线程关键字修饰,这个时候这个方法只能一个线程调用,其他的线程,只能等待使用的线程释放锁后,才能调用这个方法。这样就保证了线程安全。
严小超 2014-04-02
  • 打赏
  • 举报
回复
引用 1 楼 longtian1213 的回复:
你不保存状态,就是线程安全的吧! 要所以有状态的话,就不要用单例的喽!
大哥,能不能详细说下。谢谢
S117 2014-04-02
  • 打赏
  • 举报
回复
你不保存状态,就是线程安全的吧! 要所以有状态的话,就不要用单例的喽!
别闹腰不好 2014-04-02
  • 打赏
  • 举报
回复
spring不会保证线程的 ,spring只管里类,线程是你自己做的。
严小超 2014-04-02
  • 打赏
  • 举报
回复
引用 3 楼 u012463264 的回复:
有的方法是不需要线程安全的,所以就不需要做线程安全处理, 有的方法需要线程安全,比如售票,多个线程都在售票,售出一张就需要在总数中减掉一张,这个时候就需要线程安全,这个时候就可以把操作售票的方法用线程锁,或者隐式方式加线程关键字修饰,这个时候这个方法只能一个线程调用,其他的线程,只能等待使用的线程释放锁后,才能调用这个方法。这样就保证了线程安全。
请问,如果有这样一个情况: 往一个service里面注入dao,有两个线程同事访问这个service并且给service的dao设置值,spring是怎么保证这个service的dao的线程安全?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧