मेरे पास (सत्य) लूप का अजीब व्यवहार है। यहाँ कोड है:लूप और कतार के साथ अजीब जावा व्यवहार
वर्ग के एक सदस्य के रूप में मेरे पास है:
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 और इसे कतार प्रतिक्रिया में डाल दें। मैं (सत्य) पाश में उस प्रतिक्रिया का इंतजार कर रहा हूं, लेकिन समस्या यह है कि अगर मैं "System.out.printline (" foo ") को हटा देता हूं;" लूप केवल एक बार दर्ज किया जाएगा !? इस syso लाइन के साथ मैं "बल" जबकि लूप करने के लिए लूप करने के लिए प्रतिक्रिया प्राप्त होने तक। यहाँ क्या गलत है?
तुम बस, जबकि पाश में सच कहें, कि तुम क्या सच हो गया है निर्दिष्ट करने के लिए की जरूरत है। – DrinkJavaCodeJava
मेरे लिए, यह किसी प्रकार की दौड़ की स्थिति के रूप में लगता है। आप इसे शुरू करने वाले धागे में आमंत्रित करते हैं, है ना? इस विधि में सभी अपवादों को पकड़ने और उन्हें मुद्रित करने का प्रयास करें। –
https://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement – Boann