如何看一个类是否是线程安全的?

由JMM(Java内存模型)我们可以看出,在堆中的变量,如果同时被多个线程操作,就有可能出现线程安全问题(堆中的数据是线程共享的)。

类分为有状态(有成员变量等)和无状态的, 无状态的类肯定是线程安全的, 我们都知道servlet,还有Spring中的bean都是单例的(在上下文中拿到的对象都是同一个),那它们是怎么保证线程安全的呢? 首先一点是bean最好是无状态的,即Dao,Service这些类最好不要有成员变量, 那这种肯定是安全的, 如果有怎么办, Spring是使用ThreadLocal来保证线程安全的。