我知道有很多关于
具体而言,我想了解并发哈希映射中原子性语句的含义。
来自JavaDoc:
整个方法调用是原子性的,因此该函数最多应用于每个键一次。
如果两个线程尝试使用不同的键执行
虽然使用了“原子”一词,并且提到这意味着每个键最多只应用一次,但没有具体说明该方法的同步行为。
顺便说一句,对我而言,这与由
我想了解在两个不同的键的
基本上,我需要查看类似于在访问字段变量及其后续在调用computeIfAbsent方法时进行同步的内容。*(调用的computeIfAbsent方法是唯一修改该字段的方法。除了来自哈希映射computeIfAbsent方法的调用之外,没有其他调用者。只有一个并发哈希映射实例调用computeWithAbsent方法,调用涉及的“原子”方法)*我的字段是易失性的,以避免原子可见性的潜在问题。
computeIfAbsent
的问题。具体而言,我想了解并发哈希映射中原子性语句的含义。
来自JavaDoc:
整个方法调用是原子性的,因此该函数最多应用于每个键一次。
如果两个线程尝试使用不同的键执行
computeIfAbsent
并发现在两种情况下映射都不包含它们,那么计算缺失函数的结果执行是否会并发?我理解如果两个线程都尝试添加相同的键,则它们不会同时进行。虽然使用了“原子”一词,并且提到这意味着每个键最多只应用一次,但没有具体说明该方法的同步行为。
顺便说一句,对我而言,这与由
computeIfAbsent
调用的修改类字段的方法有关。我想了解在两个不同的键的
computeIfAbsent
方法的两个不同线程执行中是否存在线程安全问题。基本上,我需要查看类似于在访问字段变量及其后续在调用computeIfAbsent方法时进行同步的内容。*(调用的computeIfAbsent方法是唯一修改该字段的方法。除了来自哈希映射computeIfAbsent方法的调用之外,没有其他调用者。只有一个并发哈希映射实例调用computeWithAbsent方法,调用涉及的“原子”方法)*我的字段是易失性的,以避免原子可见性的潜在问题。