共有された java.util.HashMap で動作する多数のスレッドが必要です。
それぞれが単一の読み取りおよび書き込み操作を実行し (つまり、 のような一括操作を使用するものputAll()
はありません)、更新が失われないようにしたいと考えています。
同期書き込みは安全性を保証しますか? 私がこのようなことをすると:
writeLock.lock();
double latestValue = map.get(key);
map.put(key, latestValue + diff);
writeLock.unlock();
更新が失われるのを避けるのに十分でしょうか? 反復可能な読み取りを実現するには、同じアプローチで十分でしょうか?
また、 を使用した場合、安全にConcurrentHashMap
駆除できますか?locks
UPD: HashMap から ConcurrentHashMap に切り替えた場合、メモリ使用量に線形オーバーヘッドはありますか?