gpt4 book ai didi

java - volatile 是否足以更改对列表的引用?

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:28 24 4
gpt4 key购买 nike

假设我们有一个列表引用:

volatile List<Object> a;

现在线程 1 初始化它:

List<Object> newA = new LinkedList<>();
newA.add(new String("a"));
// Write to a volatile
a = newA;

然后线程 2 执行:

// first we read a volatile reference value, then invoke .get() method on it. 
Object o = a.get(0);

“o”是否保证指的是线程1添加的字符串?或者我错过了什么?假设线程1的代码先于线程2的代码执行。

最佳答案

Is "o" guaranteed to refer to the string added by the thread 1?

如果您可以保证除了您明确提到的那些之外,没有其他线程间操作会针对您的列表提交,那么是的,您拥有您所要求的保证。

如果任何线程在列表通过 volatile 变量发布后改变列表,则线程间保证不再成立。

关于java - volatile 是否足以更改对列表的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466171/

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