gpt4 book ai didi

Java while 循环在不同操作系统上的工作方式不同

转载 作者:行者123 更新时间:2023-11-30 03:54:49 25 4
gpt4 key购买 nike

我在 Debian 下遇到了一个非常奇怪的 java 问题。在 Windows 上,这有效:

boolean X=true;
while(X);

此代码在 X 为 true 时执行循环,当我将 X 设置为 false 时,while 循环结束。问题是,在 Debian 上相同的代码,当我将 X 设置为 false 时,while 循环不会停止。

如果我修改代码:

boolean X=true;
while(X) {
System.out.println("hello");
}

这段代码在 Debian 上运行良好,但前提是我添加了 print 语句。例如,如果我尝试 i++ 它无法正常工作,只有使用 print 语句才能工作。

为什么我的代码在不同操作系统上的处理方式不同?

最佳答案

如果从其他线程访问非 volatile 变量,则行为可能是不可预测的:它可能会缓存在当前线程上。尝试将X定义为 volatile :

volatile boolean X = true;

看看:Do you ever use the volatile keyword in Java?

关于Java while 循环在不同操作系统上的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com