Spring中Bean的线程安全问题

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

1.原型的(prototype)

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

2.单例的(singleton)

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

  • 有状态指的是此对象中有公共的变量,方法中会涉及到修改变量的问题,最简单的做法就是将singleton改为prototype,还可以使用ThreadLocal来解决。
  • 无状态的指的是我们只是用此变量来调用其他的方法或属性,不存在修改该变量,这样的话因为对于Java虚拟机栈每个线程都是私有的,所以也就不存在线程安全问题了。
相关推荐
布列瑟农的星空1 分钟前
还在手动翻译国际化词条?AST解析+AI翻译实现一键替换
前端·后端·ai编程
武子康21 分钟前
大数据-197 K折交叉验证实战:sklearn 看均值/方差,选更稳的 KNN 超参
大数据·后端·机器学习
皮皮林55136 分钟前
Prometheus+Grafana,打造强大的监控与可视化平台
java
JasmineWr44 分钟前
CompletableFuture相关问题
java·开发语言
零雲1 小时前
java面试:知道java的反射机制吗
java·开发语言·面试
码事漫谈1 小时前
C++数据竞争与无锁编程
后端
码事漫谈1 小时前
C++虚函数表与多重继承内存布局深度剖析
后端
weixin_425023001 小时前
Spring Boot + MyBatis Plus JOIN 分页多表查询项目文档
spring boot·后端·mybatis
java1234_小锋1 小时前
Java进程占用的内存有哪些部分?
java
sxlishaobin2 小时前
Spring Bean生命周期详解
java·后端·spring