本帖最后由 周世阳 于 2012-8-8 21:35 编辑
代码如下:
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%)
|