gpt4 book ai didi

java - 在决定使用 volatile 时,实际的锁是否重要?

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

假设我有以下代码:

private Integer number;
private final Object numberLock = new Object();

public int get(){
synchronized(number or numberLock){
return Integer.valueOf(number);
}
}

我的问题是,在以下情况下,add 方法的以下版本是否需要将 number 设为 volatile:

public void add(int num){
synchronized(number)
number = number + num;
}

public void add(int num){
synchronized(numberLock)
number = number + num;
}

我知道这些都是原子操作,但我的问题是,number guarennteed 的值是否被推送到全局内存并且对所有线程可见,而无需使用 volatile ?

最佳答案

is the value of number guarennteed to be pushed out to global memory and visible to all threads without using volatile?

是的。同步也提供可见性。实际上,同步提供可见性和原子性,而 volatile 仅提供可见性。

关于java - 在决定使用 volatile 时,实际的锁是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162622/

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