java - hashmap的线程安全更新

标签 java thread-safety hashmap

我有一个 HashMap 为:

 Map<Integer ,ArrayList<Double>> map1 = new HasMap<Integer,ArrayList<Double>>()

该映射由一定数量的线程访问和修改。我想对 ArrayList 每个组件的粒度级别进行线程安全更新。这意味着,一个值可以被多个线程修改,但一个组件不能被多个线程修改。我该怎么做?这是否可以防止迭代时出现“未定义的属性”? iterating values

[编辑]

 key      value
 1000    [0.1,0.002,0.8,0.112]

值的每个组成部分都会更新。更新时,第一个组件可以由一个线程更新,第二个组件可以由另一个线程一次更新。我不想只为一个线程锁定一对。

最佳答案

我认为你想要的是使用 Lock 。当您调用 lock() 时,它将允许您“锁定”资源以防止其他线程使用,然后在该资源上的更新完成时调用 unlock()以便其他线程可以修改它。您可以为每个资源创建一个锁。

关于java - hashmap的线程安全更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11590430/

相关文章:

java - 保存一个表单并在Outputid(主键)中生成一个值,该值一次是另一种表单?

java - 同步静态方法在 android 中不起作用?

java - 如何确保两个线程访问相同的资源并使它们线程安全?

java - 为什么我的 HashMap 实现比 JDK 慢 10 倍?

java - 请确保至少有一个领域可以验证这些 token

java - 如何从jList更改为JTable(DB中的数据有很多列和行)

java - 如何在 arraylist 中找到前 20 个最常用的单词

ruby-on-rails - 如何从哈希中删除一个键并在 Ruby/Rails 中获取剩余的哈希?

java - 文件搜索时出现空指针异常

c# - 我如何知道此 C# 方法是否线程安全?