java – 通过不同的线程同时读取和更改变量
我感兴趣的是一个线程正在等待while循环中变量的变化:
while (myFlag == false) { // do smth } 它重复无数次. 与此同时,另一个线程更改了此变量的值: myFlag = true; 如果此变量不是volatile,读者线程是否可以看到更改另一个线程中变量值的结果?一般来说,据我所知,它永远不会发生.还是我错了?然后在什么情况下,第一个线程可以看到变量的变化并退出循环?这可能不使用volatile关键字吗?在这种情况下,处理器缓存的大小是否起作用? 请解释并帮助我理解!先感谢您!! 解决方法
它可能是,是的.只是它不会明确地看到变化.
不,事实并非如此. 您正在写一个变量,然后在另一个线程中读取它.您是否看到它将取决于所涉及的确切处理器和内存架构.如果不涉及任何内存障碍,您无法保证看到新的价值 – 但您肯定不能保证不会看到它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |