Mam dziwne zachowanie pętli while (true). Oto kod:Dziwne zachowanie java z pętlą while i kolejką
Jako członek klasy mam:
static Queue<Object> response = new LinkedList<Object>();
... i funkcją:
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;
}
}
}
}
Kiedy obiekt zostanie odebrany z serwera (poprzez gniazdo), InputController klasa przekazuje ten obiekt do odpowiedniego kontrolera, w tym przypadku MasterLogInController i umieszcza go w odpowiedzi kolejki. Czekam na odpowiedź w pętli while (true), ale problem polega na tym, że usunę "System.out.printline (" foo ");" pętla zostanie wprowadzona tylko raz !? Z tą linią syso "zmuszam" pętlę do robienia pętli do czasu otrzymania odpowiedzi. Co jest nie tak?
wystarczy umieścić prawdziwe w pętli while, trzeba określić, co ma być prawdą. – DrinkJavaCodeJava
Dla mnie to brzmi jak jakiś rodzaj wyścigu. Wzywasz to w wątku, który zaczynasz, prawda? Spróbuj złapać wszystkie wyjątki w tej metodzie i wydrukuj je. –
Zobacz https://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement – Boann