Spring中Bean的线程安全问题

Spring框架本身没有明确指出Bean的线程安全问题,所以Bean本身也不具备线程安全的特性,具体情况得看scope的情况。

1.原型的(prototype)

每次创建一个新的对象,每个线程使用的对象都是要新创建的,所以不会存在线程安全的问题。

2.单例的(singleton)

对于单列的,由于多个线程共用一个对象,所以会存在同一资源竞争的问题。单例的Bean又分为有状态 和无状态的。

  • 有状态指的是此对象中有公共的变量,方法中会涉及到修改变量的问题,最简单的做法就是将singleton改为prototype,还可以使用ThreadLocal来解决。
  • 无状态的指的是我们只是用此变量来调用其他的方法或属性,不存在修改该变量,这样的话因为对于Java虚拟机栈每个线程都是私有的,所以也就不存在线程安全问题了。
相关推荐
天河归来4 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL5 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
利威尔xu5 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
逃逸线LOF6 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
砚底藏山河6 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
慢云智慧空间6 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu6 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
猿究院_夏燊7 小时前
MySQL 的四种隔离级别
java·数据库·mysql
薛定谔的猫-菜鸟程序员7 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
码流子7 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构