美文网首页Java
【5分钟背八股】Spring框架中单例bean是线程安全的么?

【5分钟背八股】Spring框架中单例bean是线程安全的么?

作者: 废柴程序员 | 来源:发表于2022-05-24 19:39 被阅读0次

    Spring中的Bean对象默认是单例的,框架并没有对bean进行多线程的封装处理

    如果Bean是有状态的,那么就需要开发人员自己来保证线程安全的保证,最简单的办法就是改变bean的作用域把singleton改成prototype,这样每次请求bean对象就相当于是创建新的对象来保证线程的安全

    有状态就是由数据存储的功能

    无状态就是不会存储数据,你想一下,我们的controller,service和dao本身并不是线程安全的,只是调用里面的方法,而且多线程调用一个实例的方法,会在内存中复制遍历,这是自己线程的工作内存,是最安全的。

    因此在进行使用的时候,不要在bean中声明任何有状态的实例变量或者类变量,如果必须如此,也推荐大家使用ThreadLocal把变量变成线程私有,如果bean的实例变量或者类变量需要在多个线程之间共享,那么就只能使用synchronized,lock,cas等这些实现线程同步的方法了。

    【5分钟背八股】10:Spring框架中单例bean是线程安全的么?.png

    推荐学习:【5分钟背八股】Spring的事务传播机制是什么?

    相关文章

      网友评论

        本文标题:【5分钟背八股】Spring框架中单例bean是线程安全的么?

        本文链接:https://www.haomeiwen.com/subject/shqsprtx.html