我有一个应用程序,它从数据库获取对象并将它们存储在 HashMap 中,大约每秒一次。我希望对象是线程安全的,因为它们是从多个线程访问的,这是使对象不可变的好情况还是会给垃圾收集器带来很大的压力?
最佳答案
是的,这将是使对象不可变的好情况,因为它们是从数据库数据构造的值对象。任何时候不需要更改对象的状态都是使该对象不可变的好时机。使对象不可变通常不会给垃圾收集器带来额外的压力,因为在线程或函数之间传递对象时,为了安全起见,您不必复制对象;这实际上意味着垃圾收集器的压力更小。
如果还需要在多个线程中使用 HashMap,请使用线程安全版本,例如 ConcurrentHashMap。
关于java - 何时使用不可变对象(immutable对象) (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827013/