1、可以将成员变量声明在方法内。
2、将成员变量放在ThreadLocal之中。
(ThreadLocal<String> userName = new ThreadLocal<>();)
成员变量放在ThreadLocal之中,传进来的参数是跟随线程的,所以也是线程安全的。
3、将bean设置为多例模式。(@Scope("prototype"))
多例模式,bean线程之间不共享就不会发生线程安全问题。
4、使用同步锁(会影响系统的吞吐量)
synchronized 修饰方法。
1、可以将成员变量声明在方法内。
2、将成员变量放在ThreadLocal之中。
(ThreadLocal<String> userName = new ThreadLocal<>();)
成员变量放在ThreadLocal之中,传进来的参数是跟随线程的,所以也是线程安全的。
3、将bean设置为多例模式。(@Scope("prototype"))
多例模式,bean线程之间不共享就不会发生线程安全问题。
4、使用同步锁(会影响系统的吞吐量)
synchronized 修饰方法。