
默认作用域是singleton,多个线程访问同一个bean时会存在线程不安全问题
保障线程安全方法:
1、在Bean对象中尽量避免定义可变的成员变量(不太现实);
2、在类中定义⼀个ThreadLocal成员变量,将需要的可变成员变量保存在 ThreadLocal 中;
ThreadLocal:
每个线程中都有一个自己的ThreadLocalMap类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问到自己的对象。
将一个共用的ThreadLocal静态实例作为key,将不同对象的引用保存到不同线程的ThreadLocalMap中,然后在线程执行的各处通过这个静态ThreadLocal实例的get()方法取得自己线程保存的那个对象,避免了将这个对象作为参数传递的麻烦。
