定义
如果某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象。
线程安全
线程安全性是不可变对象的固有属性之一,它们的不变性条件是由构造函数创建的,只要它们的状态不改变,那么这些不变性条件就能得以维持。
不可变对象一定是线程安全的。
当满足以下条件时,对象才是不可变的:
-
对象创建以后其状态就不能修改。
-
对象的所有域都是 final 类型(当然像不可变String类型的域并不需要声明为final)。
-
对象是正确创建的(在对象的创建期间,this引用没有逸出)。
2018年10月8日大约 4 分钟