gpt4 book ai didi

java - 当字段的值取决于其先前值时,为什么 Volatile 不起作用

转载 作者:行者123 更新时间:2023-12-01 07:54:48 27 4
gpt4 key购买 nike

我看到了这个说法,但我想不出原因。

Volatile doesn't work when the value of a field depends on its previous value

任何带有示例的解释都将受到高度赞赏。

最佳答案

这是一个例子:

volatile int i:

public void m() {
if (i == 0) i = 1;
else i = 2;
}

您可以让两个线程检查条件,看到 i 为 0 并将其设置为 1,尽管人们会期望此方法的两次运行会将 i 设置为 2。这是一种经典的“检查然后执行”场景。

问题在于,波动性为您提供了可见性保证,但没有原子性保证。

关于java - 当字段的值取决于其先前值时,为什么 Volatile 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31498915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com