Springboot线程安全

1.Springboot线程安全性

        默认下Springboot注入的对象都是单例的,对于全局的共享变量它是线程不安全的(除了注入的HttpServletRequest的对象,它是线程安全的)。

  • springboot 和spring一样,默认采用的是单例模式。
  • 若每个线程中对静态变量(类变量)、实例变量(对象变量)只有读操作,而无写操作,一般来说,这个全局变量是线程安全的。
  • 若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。

2.如果保证Springboot线程安全性

  Spring本身并没有解决并发访问的问题。如果bean的范围不是线程安全的(例如定义在controller中的成员变量或者静态变量就是线程不安全的),但其方法包含一些您总是希望安全运行的关键代码或者使用了静态字段需要对其进行并发修改,可以在该方法上使用synchronized关键字。或者使用一些有提供线程安全的集合进行相应的多线程操作(ConcurrentHashMap,CopyOnWriteArrayList,CopyOnWriteArraySet或者java.util.concurrent包下的集合),或者使用private ThreadLocal<Company> tc = new ThreadLocal<>()方式创建对象。

参考:

Springboot是如何保证线程安全的?_Wmenghu的博客-CSDN博客_spring如何保证线程安全

springboot中单例 / 原型模式与线程安全_侠客v的博客-CSDN博客_springboot 线程安全

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值