java 当变量不等于null时返回该变量,我用{while(var==null);return

java 当变量不等于null时返回该变量,我用{while(var==null);return var;}结果就是:"XXX无响应"

你的理想结果应该是:在while循环的时候,当var改变成null,就退出吧?但是你忘了代码第一次运行到while这个地方。进入了while 这时候var不是null。就一直停留在while循环,你while外面的代码根本没有走。var的值一直没被改变追问

不是,我的想法是:
用while阻塞线程,直到var不为空

var的值会在另一个线程中数据到达是改变

给个实现代码

while是在收到数据后停止循环向下执行,阻塞线程怎么实现?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-15
好吧, 看了下评论,知道你需要啥了.

while(true){
if(var == null){
// 继续阻塞线程

continue;

}else{
// var 不为空时,激活线程

// 退出循环

break;

}

}
第2个回答  2014-09-15
当然没响应,会陷进是死循环. 如果在while前var是null,while循环体内又没有对其赋值,必然是个死循环。追问

不,另一个线程中数据到达就会赋给var

第3个回答  2014-09-15
while条件后面多了一个分号,循环在那里空转,望采纳
第4个回答  2014-09-15
因为你这个进入死循环了,不要用while,用if。追问

我是想用while阻塞线程,直到另一个线程数据到达var被改变返回他

追答

那你就用while吧,记得要sleep一下,释放一下CPU。

while(var==null){

Thread.sleep(200);
}

追问

早知道就采纳你了

追答

没关系,了解了就好了~

第5个回答  2014-09-15
用if判断就可以了追问

具体代码

追答

if(var!=null)return var;

追问

不为空时返回

var默认是null,当另一个线程中服务器数据到达var就会被赋值,用这个等待数据

相似回答