我需要有许多在共享 java.util.HashMap 上运行的线程。
他们每个人都将执行单一的读写操作(即没有人会使用批量操作,例如putAll()
),我想确保不会丢失更新。
同步写入能保证安全吗?如果我做这样的事情:
writeLock.lock();
double latestValue = map.get(key);
map.put(key, latestValue + diff);
writeLock.unlock();
是否足以避免丢失更新?相同的方法是否足以实现可重复读取?
而且,如果我使用,我可以安全地ConcurrentHashMap
摆脱我的吗?locks
UPD:如果我从 HashMap 切换到 ConcurrentHashMap,内存使用是否有任何线性开销?