java - Hashmap 并发问题

标签 java concurrency

我有一个 Hashmap,出于速度原因,我不想要求锁定。假设我不介意陈旧的数据,同时更新和访问它会导致任何问题吗?

我的访问是获取,而不是遍历它,删除是更新的一部分。

最佳答案

是的,这会导致重大问题。一个例子是向 HashMap 添加值时可能发生的情况:这可能导致表的重新哈希,如果在另一个线程迭代冲突列表(哈希表“桶”)时发生这种情况,则该线程可能错误地找不到 map 中存在的键。 HashMap 对于并发使用是明确不安全的。

使用 ConcurrentHashMap而是。

关于java - Hashmap 并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1003026/

相关文章:

c - 为什么 gcc(3.4.5) 中的用户空间 atomic_t 不起作用

multithreading - 为什么我可以将 "move"静态 &str 放入 Rust 的多个线程中?

java对象序列化 - 线程安全?

java - 将 URL 数据写入文件为空

java - 为什么类变量的行为与继承中的方法不同?

java - 有没有办法将mongodb数据库公开为rest api

java - Hibernate 中的表级锁

java - sql查询结果的字符数

java - 如何在抽屉导航标题中更改 TextView 的文本?

java - Java EE 应用程序的可扩展性。你会如何处理它?