有个jms程序,其中有个while循环
do {
if(stopLoop){
break;
}
} while(true);
其中的stopLoop是静态变量,初始值为false
public static boolean stopLoop = false;
现在想当我接收到指定的消息时,把stopLoop改为true跳出这个while,但是怎么都不起作用,请问是什么问题?应该怎么改进?
非常奇怪, 加上这句System.out.println(stopLoop);就能够正常退出循环,但是一注释掉又不起作用了,这是什么原因?
do {
//System.out.println(stopLoop);
} while(!stopLoop);
你debug试一下看看,stoploop是否已经改为true
因为while里是true
你debug试一下看看,stoploop是否已经改为true
--同意
想要验证你的结构,直接
do {
if(true){
break;
}
} while(true);
看看能不能跳出就知道是谁的问题了
重点关注你的stoploop
按你现在的表述,下面的代码也可以实现,省几个字符
while(!stoploop){};
可以通过变量判断,也可以通过break;