Java并发编程:不可变性与对象隔离技术解析
1. 不可变性(Immutability)
1.1 不可变性的概念
如果一个对象不能改变其状态,那么当多个活动试图以不兼容的方式改变其状态时,它永远不会遇到冲突或不一致的情况。在编程中,如果现有对象从不被改变,而是在计算过程中不断创建新对象,程序会更容易理解。然而,这样的程序通常无法处理通过用户界面、协作线程等进行的交互。不过,有选择地使用不可变性是并发面向对象编程中的基本工具。
1.2 简单的不可变对象
最简单的不可变对象根本没有内部字段,其方法本质上是无状态的,不依赖于任何对象的可赋值字段。例如:
class StatelessAdder {
public int add(int a, int b) { return a + b; }
}
仅包含 final 字段的类也具有相同的安全和活性属性。不可变类的实例不会经历低级的读写或写写冲突,因为值永远不会被写入。只要它们的初始值以一致、合法的方式建立,这些对象就不会出现高级别的不变性失败。例如:
class ImmutableAdder {
private final int offset;
public ImmutableAdder(int a) { offset = a; }
public int addOffset(int b) { return offset + b; }
}
订阅专栏 解锁全文
20

被折叠的 条评论
为什么被折叠?



