0


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 线程安全

标签: spring boot java spring

本文转载自: https://blog.csdn.net/myli92/article/details/128228360
版权归原作者 tomorrow.hello 所有, 如有侵权,请联系我们删除。

“Springboot线程安全”的评论:

还没有评论