加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 05:02:03 所属栏目:Java 来源:网络整理
导读:我感兴趣的是一个线程正在等待while循环中变量的变化: while (myFlag == false) { // do smth} 它重复无数次. 与此同时,另一个线程更改了此变量的值: myFlag = true; 如果此变量不是volatile,读者线程是否可以看到更改另一个线程中变量值的结果?一般来说,
我感兴趣的是一个线程正在等待while循环中变量的变化:

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

它重复无数次.

与此同时,另一个线程更改了此变量的值:

myFlag = true;

如果此变量不是volatile,读者线程是否可以看到更改另一个线程中变量值的结果?一般来说,据我所知,它永远不会发生.还是我错了?然后在什么情况下,第一个线程可以看到变量的变化并退出循环?这可能不使用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.

不,事实并非如此.

您正在写一个变量,然后在另一个线程中读取它.您是否看到它将取决于所涉及的确切处理器和内存架构.如果不涉及任何内存障碍,您无法保证看到新的价值 – 但您肯定不能保证不会看到它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读