abcbuzhiming 2014-03-18 17:17 采纳率: 0%
浏览 566
已采纳

spring管理的单例对象内部如果有字段类型那么是否有线程安全问题

service层,dao层默认都是单例的。而且我看到资料上说,这种单例实际上是用threadlocal实现的,而这种技术是一个线程复制了一个特殊的副本来实现单例模式,用完再回收,那么是不是可以说,如果service层和dao层有定义一些字段,这些字段会在使用的时候产生多线程安全问题?

  • 写回答

2条回答 默认 最新

  • 征服.刘华强 2014-03-19 13:41
    关注

    {这种单例实际上是用threadlocal实现的,而这种技术是一个线程复制了一个特殊的副本来实现单例模式,用完再回收} 你这个地方的描述就是错的。

    在Spring容器当中管理的对象默认都是单例模式的。
    即 BeanFactory.getBean("user") == BeanFactory.getBean("user")
    也就是说当有N个线程并发去调用BeanFactory.getBean("user")的时候 拿到的对象是同一个。

    有个概念需要说清楚 那就是线程安全与不安全与Spring没关系。
    就比如说N个线程并发访问 BeanFactory.getBean("user"),拿到的是同一个对象,如果这个对象没有线程不安全的属性 那么多线程使用也是没有问题的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • lingdongfeixue 2014-03-20 18:05
    关注

    spring管理的对象时单例 还是 多例 是通过参数scope可以配置的,而且3.x以后模式就是多例的

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 act_ge_bytearray的草稿json数据复制到act_de_model 的model_editor_json的脚本
  • ¥15 cvi使用CreateThread创建线程时,出现存储空间不足无法处理此命令的错误
  • ¥15 求苹果推信imessage批量推信技术
  • ¥15 ubuntu 22.04 系统盘空间不足。隐藏的docker空间占用?(相关搜索:移动硬盘|管理系统)
  • ¥15 利用加权最小二乘法求亚马逊各类商品的价格指标?怎么求?
  • ¥15 c++ word自动化,为什么可用接口是空的?
  • ¥15 Matlab计算100000*100000的矩阵运算问题:
  • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
  • ¥16 需要完整的这份订单所有的代码,可以加钱
  • ¥30 写一个带界面控制的机房电脑一键开机关机并且实时监控的软件