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