java - 将对象缓存为不可变类

标签 java performance caching immutability

我问的是非常笼统的问题,答案可能因要求而异,但对于“一般”或“经验法则”,我们是否可以说以下是一个好的设计规则:

The classes to be cached (static/reference data) should be designed as immutable, with exceptions reasoned.

如果上述说法不正确,那么设计/性能问题可能是什么?

最佳答案

@JohnB 对基础数据有很好的回答。

但是,如果问题是指缓存类本身的不可变性(它们将数据保存在缓存中),那么答案是如果类的实例是可变类,则可变类会导致线程安全问题被多个线程引用(通常发生在通过缓存共享的数据中)。此外,可能会发生数据的“意外”修改,其中无意中修改了共享实例(因为修改代码不知道数据已共享)。

关于java - 将对象缓存为不可变类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12078428/

相关文章:

java - Caffeine Cache.asMap View 的行为

ruby-on-rails - Redis 缓存在 View 中无法正常工作

java - 如何使用 Java FB Business SDK 获取 Facebook 广告帐户的转化?

java - 如何指示 Windows 报告我的 Java 应用程序的名称而不是 java.exe

java - 访问 .class 文件中的符号表

database - SQLite:防止碎片化

java - 如何使用正则表达式替换附加到java字符串的开头?

python - 比较python中的两个列表并打印输出

jquery - 为什么 jQuery 不提供 .firstChild 方法?

asp.net-mvc - 关于高流量网站缓存的问题