【发布时间】:2012-11-27 09:18:27
【问题描述】:
我有奇怪的 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 循环执行循环,直到收到响应。这里有什么问题?
【问题讨论】:
-
你只是在while循环中输入了true,你需要指定什么是true。
-
对我来说,这听起来像是某种竞争条件。您在启动的线程中调用它,对吗?尝试在此方法中捕获所有异常并打印它们。
标签: java while-loop queue