Spring中Bean的线程安全问题

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

1.原型的(prototype)

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

2.单例的(singleton)

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

  • 有状态指的是此对象中有公共的变量,方法中会涉及到修改变量的问题,最简单的做法就是将singleton改为prototype,还可以使用ThreadLocal来解决。
  • 无状态的指的是我们只是用此变量来调用其他的方法或属性,不存在修改该变量,这样的话因为对于Java虚拟机栈每个线程都是私有的,所以也就不存在线程安全问题了。
相关推荐
蝎子莱莱爱打怪2 分钟前
XZLL-IM干货系列 02|Protobuf 协议设计:从 JSON 切到二进制,每条消息省了 60%
后端·面试·架构
程序员黑豆10 分钟前
AI全栈开发之Java:第一个Java程序
前端·后端·ai编程
kong@react12 分钟前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
小Q的编程笔记16 分钟前
Pump.fun 的核心是什么?用 300 行 Solidity 实现 Bonding Curve 与自动 LP 销毁
前端·后端·智能合约
学以智用18 分钟前
.NET Core Swagger 超详细讲解(从入门到企业级)
后端·.net
未若君雅裁18 分钟前
JVM 运行时数据区:程序计数器、堆、虚拟机栈与栈帧
java·jvm
摇滚侠19 分钟前
Spring 零基础入门到进阶 基于 XML 管理 Bean 14-28
xml·数据库·spring
智慧物业老杨23 分钟前
物业交接数智化解决方案:从“钥匙移交“到“数据交割“的技术落地实践
spring
浮游本尊1 小时前
Java学习第40天 - 数据库基础、表设计与 Spring Boot 数据访问入门
后端
iOS开发上架哦1 小时前
Jenkins 自动上传 IPA 到 App Store 把发布步骤融入 CI/CD
后端·ios