Spring虽然帮我们管理许多的bean,但是并不都保证他么的线程安全,需要我自己写代码来保证。但是单例和多例都是线程安全的
线程不安全的情况:
1.存在实例变量,线程不安全
2.存储类变量,线程不安全
解决:
对于有状态的bean(有存储能力,至少有一个属性来标识当前的状态),spring采用ThreadLocal进行处理,使它们成为线程安全可以共享的对象。
对于有状态的bean,也可以使用原型模式(prototype),每次使用时都会重新生成一个对象,解决了线程不安全的问题
Spring虽然帮我们管理许多的bean,但是并不都保证他么的线程安全,需要我自己写代码来保证。但是单例和多例都是线程安全的
线程不安全的情况:
1.存在实例变量,线程不安全
2.存储类变量,线程不安全
解决:
对于有状态的bean(有存储能力,至少有一个属性来标识当前的状态),spring采用ThreadLocal进行处理,使它们成为线程安全可以共享的对象。
对于有状态的bean,也可以使用原型模式(prototype),每次使用时都会重新生成一个对象,解决了线程不安全的问题