Java并发编程实践3.4-不可变性

1.不可变对象。创建后状态不能被修改的东西。

2.法则:不可变对象天生就是线程安全的。

3.不可变对象

  只有满足如下状态,一个对象才是不可变的:

  A它的状态不能在创建后再修改;

  b 所有域都是final类型的;并且,

  c 它被正确创建(创建期间没有发生this引用的逸出)

注意:final修饰的引用(的对象)时,指的是对象不可变(尽管final域指向的对象是可变的,这个对象仍然可以修改),并不是到对象的引用不可变。详见java编程思想中的final关键字。

注意:final域使得确保初始化安全性成为可能,初始化安全性让不可变对象不需要同步就能自由地被访问和共享。

4.良好实践:将所有的域声明为final型,除非它们是可变的。

5.使用volatile发布不可变对象。

法则:不可变的容器对象持有与不可变约束相关的多个状态变量,并利用volatile引用确保及时的可见性。

猜你喜欢

转载自blog.csdn.net/lvxingzhe123456/article/details/41926401