文档

Java™ 教程-Java Tutorials 中文版
Immutable Objects (不可变对象)
Trail: Essential Classes
Lesson: Concurrency

Immutable Objects (不可变对象)

如果一个对象的状态在构造后不能更改,则该对象被认为是 immutable (不可变的)。最大程度上依赖不可变对象,被广泛接受为是创建简单、可靠代码的合理策略。

不可变对象在并发应用程序中特别有用。由于它们不能更改状态,因此它们不会被线程干扰破坏或在不一致状态下被观察到。

程序员通常不愿意使用不可变的对象,因为他们担心创建一个新的对象要比更新对象的成本要高。实际上创建对象的影响经常被高估,并且可以通过与不可变对象相关联的一些效率来抵消。这些包括减少垃圾回收产生的开销,以及消除保护可变对象免于损坏所需的代码。

以下小节采用其实例可变的类,并从中派生出具有不可变实例的类。通过这样做,它们为这种转换提供了一般规则,并展示了不可变对象的一些优点。


Previous page: Guarded Blocks
Next page: A Synchronized Class Example