tea*_*m17 0 java multithreading if-statement infinite-loop while-loop
我有一个短暂的循环,如:
boolean a = false;
MyClass b = new MyClass();
b.b = false;
// b is used in other thread...
while(!a){
if(b.b){
throw new Exception("b is true");
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,a永远不会成为现实,但在一些运行之后,布尔变量b.b应该变为真.奇怪的是,while循环从未离开,我的程序在无限循环中发挥作用.
我想知道为什么并决定System.out.print在循环中添加一个语句:
while(!a){
if(b.b){
throw new Exception("b is true");
}
System.out.println("there is something more to execute");
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是我的代码应该是这样的.while循环遍历if语句,直到b.b为true,并抛出异常离开循环.
可能是在第一种情况下,程序停止检查if语句,因为编译器认为没有必要再次检查?如果没有,有人可以向我解释,为什么第一个案例不起作用,但第二个案件不起作用?
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |