java - 何时使用不可变对象(immutable对象) (Java)

标签 java immutability

我有一个应用程序,它从数据库获取对象并将它们存储在 HashMap 中,大约每秒一次。我希望对象是线程安全的,因为它们是从多个线程访问的,这是使对象不可变的好情况还是会给垃圾收集器带来很大的压力?

最佳答案

是的,这将是使对象不可变的好情况,因为它们是从数据库数据构造的值对象。任何时候不需要更改对象的状态都是使该对象不可变的好时机。使对象不可变通常不会给垃圾收集器带来额外的压力,因为在线程或函数之间传递对象时,为了安全起见,您不必复制对象;这实际上意味着垃圾收集器的压力更小。

如果还需要在多个线程中使用 HashMap,请使用线程安全版本,例如 ConcurrentHashMap。

关于java - 何时使用不可变对象(immutable对象) (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827013/

相关文章:

java - 从用户 java 读取一行文本

java - 应用程序关闭时清理 JSF session 范围 bean

java - 如何在 ScrolledForm 中禁用滚动条?

scala - 标准化和不可变数据模型

java - Java 会优化不可变对象(immutable对象)吗?

java - 无法将 Android Studio 指向 Java 1.8

java - 如何解析 csv 文件并将详细信息存储在 java bean 类中

c# - .NET - System.Collections.Immutable 某处是否有单向链表?

python - Python 中模块级常量的元组与列表?

javascript - JavaScript 中 Object.freeze() 和 Object.seal() 的用例是什么?