Spring的单例Bean与线程安全问题

  • Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式
  • 线程安全问题都是由成员变量及静态变量引起的。
  • 若每个线程中对成员变量、静态变量只有读操作,而无写操作,一般来说,这个成员变量、静态变量是线程安全的;
  • 若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
  • 当多个线程调用方法时会不会出现线程安全问题呢?答案是不会,方法存在虚拟机栈中,是线程私有的。

成员变量、局部变量、静态变量的区别

成员变量 局部变量 静态变量
别名 实例变量 类变量
定义位置 在类中,方法外 方法中,或者方法的形式参数 在类中,方法外
初始化值 有默认初始化值 无,先定义,赋值后才能使用 有默认初始化值
调用方式 对象调用 对象调用,类名调用
生命周期 与对象共存亡 与方法共存亡 与类共存亡
存储位置 堆中 栈中 方法区

推荐文章:
聊一聊Spring中的线程安全性
JVM内存模型

你可能感兴趣的:(Spring)