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