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

在通常状况下,只有无状态的Bean才能够在多线程环境下共享,在Spring中,绝大部分Bean均可以声明为singleton做用域,由于Spring对一些Bean中非线程安全状态采用ThreadLocal进行处理,解决线程安全问题。安全

ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。同步机制采用了“时间换空间”的方式,仅提供一份变量,不一样的线程在访问前须要获取锁,没得到锁的线程则须要排队。而ThreadLocal采用了“空间换时间”的方式。多线程

ThreadLocal会为每个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。由于每个线程都拥有本身的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,能够把不安全的变量封装进ThreadLocal。
 线程

相关文章
相关标签/搜索