如果一个对象不能够修改其内部状态(属性),那么它就是线程安全的,因为不存在并发修改
在 web 阶段学习时,设计 Servlet 时为了保证其线程安全,都会有这样的建议:不要为 Servlet 设置成员变量,这种没有任何成员变量的类是线程安全的。因为成员变量保存的数据也可以称为状态信息,因此没有成员变量就称之为【无状态】
final 的使用
- 属性用 final 修饰,保证了该属性是只读的,不能修改
- 类用 final 修饰,保证了该类中的方法不能被覆盖,防止子类无意间破坏不可变性
通过创建副本对象来避免共享的手段称之为【保护性拷贝(defensive copy)】
