Spring 中管理的 bean 是单例还是多例的,是线程安全的吗?为什么?抛开框架,单例一定是线程安全的么?怎么实现线程安全的单例
Spring 管理的 Bean 对象默认是单例模式
Spring 框架并没有对单例 bean 进行任何多线程的封装处理.Spring 框架中的单例 bean 不是线程安全的。
解决办法:最浅显的解决办法就是将多态 bean 的作用域由 singleton
变更为 prototype
。
在 Bean 对象中尽量避免定义可变的成员变量;
在 bean 对象中定义一个 ThreadLocal 成员变量,将需要的可变成员变量保存在 ThreadLocal 中,抛开框架 单例在并发环境下 不一定是线程安全的。可以使使用双重锁检查实现单列模式来保证线程安全的单例。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: Spring IOC 初始化过程
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论