我有 while(true) 循环的奇怪行为。这是代码:
作为班上的一员,我有:
static Queue<Object> response = new LinkedList<Object>();
...和一个功能:
private void read() {
while (true)
{
System.out.println("foo");
if(!(response.isEmpty()))
{
if((Boolean)response.peek() == true)
{
view.dispose();
LogInControler controler= new LogInControler();
disableMasterLogin();
response.poll();
return;
}
else if((Boolean)response.poll() == false)
{
JOptionPane.showMessageDialog(view.getRootPane(),
"Wrong username or password.");
view.tfUsername.requestFocus();
return;
}
}
}
}
当从服务器(通过 Socket)接收到对象时,InputController 类将该对象传递给适当的控制器,在本例中为 MasterLogInController 并将其放入队列响应中。我正在等待 while(true) 循环中的响应,但问题是如果我删除 "System.out.printline("foo");" 循环只会输入一次!?使用这条 syso 行,我“强制”while 循环执行循环,直到收到响应。这里有什么问题?