【发布时间】:2011-04-19 04:51:03
【问题描述】:
我正在编写一个广泛使用大型 HashMap 的程序。它是多线程的,所以我在访问它时使用了读写锁。但是,它有一个我想利用的特殊属性。
在将数据“放入”到 HashMap 后,该数据从不更改。曾经。每当对该数据结构的状态进行更改时,它实际上只是创建了新的“一代”结构,而旧的则保持不变。
也就是说,在另一个线程正在写入一个值的同时从 HashMap 读取一个值是否安全,知道另一个线程将永远写入你正在写入的值阅读?有没有一些简单的哈希表结构可以给我这种保证?
【问题讨论】:
-
您是否想在以某种方式修改哈希图后对其进行深度复制?正如@Brian Roach 指出的那样,这些新副本是只读的,不需要 MT 同步。但是,您可能需要同步才能选择正确的“版本”来阅读。或者,也许我错过了什么......
标签: java multithreading locking hashmap