2
|
hema chandra · 技术社区 · 7 年前 |
1
2
但即使没有,你仍然会遇到问题。例如,假设新的更新在您开始清除/写入后立即到达。 我认为解决方案是使用两个映射和一个队列。
主hashmap总是快速更新,并且总是最新的。更新和使用主哈希映射的操作不会(显著)被阻止。
第二个hashmap只由一个线程访问,因此它不需要并发。因此速度会更快。 文件的状态通常会稍微落后于主hashmap。但这是不可避免的。避免这种情况的唯一方法是阻止对主地图的更新。。。这就是你想要避免的。 另一种方法是加快文件写入速度。我怀疑它之所以慢是因为您当前的设计要求您每次都清除并重写文件。另一种方法是只编写 变化 到文件。这意味着你可能有更多的工作要做的重新启动。。。假设文件的目的是记录映射状态,以便可以重新启动。 |
2
2
听起来您需要通过在类中包装ConcurrentHashMap来利用封装,并且可能需要使用带有队列的add/remove方法。看看 java.util.concurrent
这个想法是使用
|