代码如下:
public class MainTest {
private boolean boo=true;
public void TestOne(){ //方法1:用来执行一个while循环,循环条件是boo
int i=0;
while (boo) //boo变为false后,循环却一直没有结束
{
i++;
}
System.out.print(i);
}
public void TestTwo(){ //方法2,改变boo的值
boo=false;
}
public static void main(String [] args){
final MainTest mt =new MainTest();
Thread t1 = new Thread(new Runnable () {
public void run(){
mt.TestOne();
}
});
Thread t2 = new Thread(new Runnable () {
public void run () {
mt.TestTwo();
System.out.print("boo:"+mt.boo); //输出boo的值,显示结果的确为false
}
});
t1.start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
t2.start();
}
}
正常情况,10毫秒过后,t2线程启动,程序就会停止,可是很可能t1线程一直没有跳出循环,成为一死循环,t2也输出了boo的确已经改为false了,可是while循环还是继续,不输出i,求助为什么(修改一下,并不是每次都会死循环,是经常我的几率大于30%)