gpt4 book ai didi

java - 通过不同线程同时读取和更改变量

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:33:53 25 4
gpt4 key购买 nike

我对 一个线程正在等待 while 循环中的变量变化的情况感兴趣:

while (myFlag == false) {
// do smth
}

它重复了无数次。

同时,另一个线程改变了这个变量的值:

myFlag = true;

如果这个变量不是易变的,读者线程能否看到在另一个线程中更改变量值的结果?一般来说,据我所知,它永远不会发生。还是我错了?那么什么时候、什么情况下,第一个线程才能看到变量的变化而退出循环呢?这可能不使用 volatile 关键字吗?处理器缓存的大小在这种情况下是否起作用?

请解释并帮助我理解!提前致谢!!

最佳答案

Can the reader-thread see the result of changing the value of the variable in the other thread if this variable is NOT volatile?

可能能够,是的。只是它肯定不会看到变化。

In general, as I understand it will never happen.

不,不是这样的。

您正在写入一个变量,然后在另一个线程中从中读取。您是否看到它取决于所涉及的确切处理器和内存架构。在不涉及任何内存障碍的情况下,您不能保证看到新值 - 但您当然也不能保证不会看到它。

关于java - 通过不同线程同时读取和更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19104146/

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