java 并发编程实战-Immutability模式

115 阅读1分钟

此文章为9月Day02学习笔记,内容来源于极客时间《Java 并发编程实战》

定义

不变性(Immutability)模式。所谓不变性,简单来讲,就是对象一旦被创建之后,状态就不再发生变化

实现

将一个类所有的属性都设置成 final 的,并且只允许存在只读方法,那么这个类基本上就具备不可变性了

经典实现

Java SDK 里很多类都具备不可变性,只是由于它们的使用太简单,最后反而被忽略了。例如经常用到的 String 和 Long、Integer、Double 等基础类型的包装类都具备不可变性,这些对象的线程安全性都是靠不可变性来保证的

享元模式

利用享元模式可以减少创建对象的数量,从而减少内存占用

小结

  • 不可变类的特点:类、属性都是final的,方法是只读的
  • 为了解决有些不可变类每次创建一个新对象导致内存浪费的问题:享元模式/对象池
  • 注意事项:区别引用不可变和实际内容不可变
  • 更简单的不可变对象:无状态对象