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

Java while循环会在执行中停止吗?,java,loops,while-loop,Java,Loops,While Loop,当执行while循环时,java是否经常检查参数是否为true?例如,如果一个while循环是 while(k=7) { Thread.sleep(5000); } 但是在5秒内,另一个线程将k更改为8,循环会继续等待还是立即退出 否,它只会在执行路径到达时进行检查。因此,在您的示例中,它将每5秒检查一次 如果希望立即收到通知,则必须使用wait()、notify()或其他同步方法 这里有一个否,它只会在执行路径到达时进行检查。因此,在您的示例中,它将每5秒检查一次 如果希望立即收到通

当执行while循环时,java是否经常检查参数是否为true?例如,如果一个while循环是

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

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

否,它只会在执行路径到达时进行检查。因此,在您的示例中,它将每5秒检查一次

如果希望立即收到通知,则必须使用wait()、notify()或其他同步方法


这里有一个

否,它只会在执行路径到达时进行检查。因此,在您的示例中,它将每5秒检查一次

如果希望立即收到通知,则必须使用wait()、notify()或其他同步方法


这是一个

条件在开始时检查一次,如果进入循环,则在每次迭代执行主体后检查一次。因此,即使在执行主体时更改了
k
,它也不会立即退出

哦,你可能是指
k==7
(回想一下
==
=
赋值时比较)。有些人甚至会编写
7==k
,以避免潜在的错误

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

int k = 7;
while (k == 7) {
    k = 8;
    System.out.println("here!");
}
在这里
请注意,即使将
k
立即更改为不再满足循环条件的值,主体仍然完全执行。

该条件在开始时检查一次,如果进入循环,则在每次迭代执行主体后检查一次。因此,即使在执行主体时更改了
k
,它也不会立即退出

哦,你可能是指
k==7
(回想一下
==
=
赋值时比较)。有些人甚至会编写
7==k
,以避免潜在的错误

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

int k = 7;
while (k == 7) {
    k = 8;
    System.out.println("here!");
}
在这里
请注意,即使将
k
立即更改为不再满足循环条件的值,主体仍然完全执行。

否。即使
k
是易失性的(或者,更糟糕的是,从另一个线程更改而不使其易失性;坏主意)或者,如果对象的属性可以通过在循环内调用的方法进行更改,则只会在循环体的末尾对其进行检查,从而决定重复循环体或继续通过循环


您可以通过中断线程并将捕获放在循环外,或者通过内部检查和
break

否来中断循环。即使
k
是易变的(或者,更糟糕的是,从另一个线程更改而不使其易变;坏主意)或者,如果对象的属性可以通过在循环内调用的方法进行更改,则只会在循环体的末尾对其进行检查,从而决定重复循环体或继续通过循环


您可以通过中断线程并使捕获位于循环外部,或者通过内部检查和
中断

来中断循环,您使用的是
=
而不是
=
。可能是打字错误。其次,
k
是一个实例变量吗?什么是
k
?您省略了与之相关的代码…上的每一行都按照它所说的做,不再做更多。它不知道它周围的其他行在另一个场景中会做什么。当它睡觉的时候,这就是它所做的一切。顺便说一句,如果它确实立即停止,那么设置睡眠时间有什么意义呢?您使用的是
=
而不是
=
。可能是打字错误。其次,
k
是一个实例变量吗?什么是
k
?您省略了与之相关的代码…上的每一行都按照它所说的做,不再做更多。它不知道它周围的其他行在另一个场景中会做什么。当它睡觉的时候,这就是它所做的一切。顺便说一句,如果它立即停止,那么设置睡眠时间有什么意义呢?