Spring如何处理线程的并发问题

186 阅读1分钟

1.可以将成员变量声明到方法内

2.将成员变量放在ThreadLocal之中

成员变量放在TreadLocal 之中,传进来的蚕食是跟随线程的,所以也是线程安全的

ThreadLocal则从另一个角度来解决多线程的并发访问,TreadLocal会为每一个线程提供一个独立的遍历副本,从而隔离了多个线程对数据的访问冲突,因为每一个线程都拥有了自己的变量副本,从而也就没有必要去对变量进行同步了,TreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的变量封装进ThreadLocal.由于ThreadLocal中可以持有任何类型的对象,低版本JDK所提供的get()返回的是Object对象,需要强制类型转换.但JDK5.0通过泛型很好的解决了这个问题,在一定程序的简化了TreadLOcal的使用.

3.将bean设置多利模式.

多例模式,bean线程之间不共享就不会发生线程安全问题.

4.使用同步锁(会影响系统的吞吐量)

synchronize修饰方法