Spring中Bean的线程安全问题

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

1.原型的(prototype)

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

2.单例的(singleton)

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

  • 有状态指的是此对象中有公共的变量,方法中会涉及到修改变量的问题,最简单的做法就是将singleton改为prototype,还可以使用ThreadLocal来解决。
  • 无状态的指的是我们只是用此变量来调用其他的方法或属性,不存在修改该变量,这样的话因为对于Java虚拟机栈每个线程都是私有的,所以也就不存在线程安全问题了。
相关推荐
小满zs6 分钟前
Go语言第十四章(文件操作)
后端·go
打工仔折腾 AI6 分钟前
Linux 网络编程:从零掌握 TCP Socket 编程与 C++ 实战落地
linux·网络·人工智能·后端·python·tcp/ip·性能优化
余额瞒着我当琳8 分钟前
C++11,发展历史浅谈,初始化列表和对象初始化,右值引用和移动语义
java·开发语言·c++·算法
曹牧15 分钟前
Java:`tools.jar`
java·开发语言·jar
IT枫斗者枫哥16 分钟前
Spring AI文档更新后仍命中旧内容:核对分片ID、来源和版本
java·人工智能
沙蒿同学18 分钟前
Wails v3 实战:一个桌面提醒客户端,从 v2 升到 v3 的全过程
前端·后端·github
aibo86030823 分钟前
基于 Spring Boot + Vue3 的爱心众筹管理系统设计与实现
java·spring boot·后端
SimonKing25 分钟前
OpenCode免费模型直接给`Workbuddy`用,一键导入
java·后端·程序员
Tsuki_tl26 分钟前
【优选算法:双指针】——复写零题解
java·c++·算法·leetcode·数组·双指针·复写零