我注意到这个问题(如果它是一个问题),并决定建立一个测试环境。有人知道这是一个实际的问题还是只有我遇到了吗?
import java.util.Random;
public class Start {
public static boolean value;
public static void main(String[] args){
Thread thread = new Thread(){
@Override
public void run(){
random();
}
};
thread.start();
while(true){
if(value) System.out.println("Done");
}
}
public static void random(){
while(true){
value = new Random().nextInt(5) == 0;
}
}
}
我希望这段代码能够一直输出“Done”,但实际上它只在一开始输出了一堆,之后就没有再输出了。当我将代码修改为以下内容时:
while(true){
System.out.print(""); //Modification
if(value) System.out.println("Done");
}
它开始不断发送“完成”消息。有人知道是怎么回事吗? 注意:我已经在Eclipse环境和使用jdk 1.8.0 v.25和jre 1.8.0 v.51编译的jar中进行了测试。
System.out.println
调用会改变行为... - Jean-François Savard