我有一个应用程序从数据库中获取对象,并将它们大致每秒一次存储在HashMap中。我希望对象在线程安全,因为它们是从多个线程访问的,这是使对象不可变的好处,还是会给垃圾收集器带来很大压力?
答案 0 :(得分:2)
是的,如果对象是不可变的,这将是一个很好的情况,因为它们是从数据库数据构造的值对象。任何时候你不需要改变对象的状态是使该对象不可变的好时机。使对象不可变通常不会给垃圾收集器带来额外的压力,因为当在线程或函数之间传递时,你不必为了安全而复制对象;这实际上意味着对垃圾收集器的压力更小。
如果还要从多个线程使用HashMap,请使用线程安全版本,例如ConcurrentHashMap。