while循环会在执行中停止吗?

时间:2013-07-31 16:40:15

标签: java loops while-loop

执行while循环时,java会不断检查参数是否为真?例如,如果while循环是

while(k=7) {
    Thread.sleep(5000);
}

但是在5秒内另一个线程将k更改为8,循环会继续等待还是立即退出?

3 个答案:

答案 0 :(得分:6)

不,它只会检查执行路径何时将其带到那里。因此,它将在您的示例中每5秒检查一次。

如果您希望立即得到通知,则必须使用wait(),notify()或其他一些同步方法。

这是example

答案 1 :(得分:5)

没有。即使k是易变的(或者更糟糕的是,从另一个线程改变而没有让它变得不稳定;坏主意)或者一个对象的属性可以通过循环内部调用的方法改变,它只会在最后检查循环体,决定重复身体或继续经过循环。

您可以通过中断线程并将循环置于循环外部,或使用内部检查和break来打破循环。

答案 2 :(得分:2)

条件在开始时检查一次,如果输入循环,则在每次迭代执行主体后执行。所以不,即使在执行正文时k被更改,它也不会立即退出。

哦,你可能意味着k == 7(回想===分配时进行比较)。有些人甚至会写7 == k以避免可能犯这个错误。

这与线程没有多大关系。例如,考虑:

int k = 7;
while (k == 7) {
    k = 8;
    System.out.println("here!");
}
here!

注意即使k立即更改为不再满足循环条件的值,主体仍然完全执行。