while(true)loop有奇怪的行为。下面是代码:while循环和队列的奇怪java行为
作为类的成员我有:
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;
}
}
}
}
当从服务器(通过插座)接收到的对象,InputController类将该对象传递给适当的控制器,在这种情况下为MasterLogInController并将其放入Queue响应中。 我正在等待while(true)循环中的响应,但问题是如果我删除“System.out.printline(”foo“);”循环只会输入一次!?有了这个系统行我“强制”while循环做循环,直到收到响应。这里有什么问题?
你只要把真正的while循环,你需要指定什么必须是真实的。 – DrinkJavaCodeJava
对我而言,这听起来像是某种竞争条件。你在开始的线程中调用它,对吧?尝试捕获此方法中的所有例外并打印它们。 –
查看https://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement – Boann