大部分时候我们并没有在系统中使用多线程,所以很少有人会关注这个问题。
单例 bean 存在线程问题,主要是因为当多个线程操作同一个对象的时候,对这个对象的非静态成员变量的写操作会存在线程安全问题。
常见的有两种解决办法:
-
在Bean对象中尽量避免定义可变的成员变量(不太现实)。
-
在类中定义一个ThreadLocal成员变量,将需要的可变成员变量保存在 ThreadLocal 中(推荐的一种方式)。
探讨了在多线程环境下,单例Bean存在的线程安全问题,主要聚焦于非静态成员变量的写操作可能导致的问题,并提出了两种解决方案:一是避免在Bean中定义可变成员变量,二是利用ThreadLocal来隔离线程间的可变状态。
大部分时候我们并没有在系统中使用多线程,所以很少有人会关注这个问题。
单例 bean 存在线程问题,主要是因为当多个线程操作同一个对象的时候,对这个对象的非静态成员变量的写操作会存在线程安全问题。
常见的有两种解决办法:
在Bean对象中尽量避免定义可变的成员变量(不太现实)。
在类中定义一个ThreadLocal成员变量,将需要的可变成员变量保存在 ThreadLocal 中(推荐的一种方式)。
4305
614
6092
1203

被折叠的 条评论
为什么被折叠?