java中,我用线程A去修改class1.filed1,main线程中有一段代码是这样的:
while(class1.filed1 == null){
}
如上代码,程序会死在while循环中,但是在while里添加线程休眠后正常,代码如下:
while(class1.filed1 == null){
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
请问这是什么原因呢?
另外,第一段代码在window+jdk1.6(开发时候环境)没问题,在linux+jdk1.7中有问题。
感谢您的回答,看了您的代码,我理解,您的意思是当执行Thread.sleep(1000);的时候,执行的线程是切换的,但是,不睡眠,似乎线程也会切换啊?而且,似乎和运行环境还有关系。。。
那为什么window下没问题呢?而且,线程之间不是互相抢时间片段吗?通过log,我确定,其他线程执行了,class1.filed1的值已经不为null了,在其他线程里做的修改,并打印的日志。