- Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式
- 线程安全问题都是由成员变量及静态变量引起的。
- 若每个线程中对成员变量、静态变量只有读操作,而无写操作,一般来说,这个成员变量、静态变量是线程安全的;
- 若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
- 当多个线程调用方法时会不会出现线程安全问题呢?答案是不会,方法存在虚拟机栈中,是线程私有的。
成员变量、局部变量、静态变量的区别
成员变量 | 局部变量 | 静态变量 | |
---|---|---|---|
别名 | 实例变量 | — | 类变量 |
定义位置 | 在类中,方法外 | 方法中,或者方法的形式参数 | 在类中,方法外 |
初始化值 | 有默认初始化值 | 无,先定义,赋值后才能使用 | 有默认初始化值 |
调用方式 | 对象调用 | — | 对象调用,类名调用 |
生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |
存储位置 | 堆中 | 栈中 | 方法区 |
推荐文章:
聊一聊Spring中的线程安全性
JVM内存模型