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

use*_*220 1 java loops while-loop

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

while(k=7) {
    Thread.sleep(5000);
}
Run Code Online (Sandbox Code Playgroud)

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

Tre*_*nin 7

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

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

这是一个例子


ζ--*_*ζ-- 5

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

你可以通过中断线程并在循环外部使用catch,或者使用内部检查来中断循环break.