gpt4 book ai didi

java - 并发实践 - volatile++

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:49 26 4
gpt4 key购买 nike

Concurrency in Practice 中,它说如果

Writes to the variable do not depend on its current value.

因此,如果您有一个共享的可变变量 a,并且所有线程对它执行的操作都是 a++(它们不获取值,它们只是++)。

然后根据引用,即使 a++ 不是原子的,您也应该能够使其成为 volatile,对吗?

最佳答案

不,在 volatile 变量上使用 ++ 不是线程安全的,因为

a++

相当于:

int temp = a;
temp = temp + 1;
a = temp;

所以回写到 a 可能发生在 另一个线程修改了 a 因为你的线程读取了它,所以 a++,即使 a 是易变的,也不是线程安全的。

您可以使用 AtomicInteger ,它实现了线程安全的原子增量。

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

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