java - Updating GUI thread from another thread -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 1 उत्तर
मैं थोड़ा भ्रमित हूँ जावा में बहु थ्रेडिंग के साथ, मेरे पास एक GUI है जिसके लिए मैंने एक थ्रेड बनाया है और एक अन्य प्रोजेक्ट जो एक सर्वर के रूप में कार्य करता है और अन्य डेटा स्रोतों से डेटा प्राप्त करने के लिए उपयोग किया जाता है जो अलग थ्रेड पर है सर्वर का थ्रेड GUI थ्रेड पर एक दृश्य में एक विधि को कॉल करता है और एक स्थिति अपडेट करता है, हालांकि जीयूआई अद्यतन नहीं करता है। मैं इस वास्तुकला को सही ढंग से कैसे सेटअप कर सकता हूं ये है कि मेरे पास क्या है:
सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {// कनेक्शन रननाबल r2 = नया रननाबल () {@Override सार्वजनिक शून्य चला () {App.connectToServer () ; }}; // मुख्य विंडो लॉन्च करें रननाबल आर 1 = नया रननाबल () {@ ओवरराइड पब्लिक वायड रन () {// इंस्टाल थीम वेबलुक एंडफील इन्स्टॉल (); // मुख्य विंडो बूटवंडो शुरू करता है myMainWindow = नया बूटविंडो (); }}; थ्रेड thr1 = नया थ्रेड (r1); सूत्र थ्रेड = नया थ्रेड (आर 2); thr1.start (); thr2.start (); } // सर्वर कनेक्शन निजी स्थिर शून्य कनेक्टToServer () {System.out.println ("ई-ट्रेड मैनेजर सर्वर से कनेक्ट हो रहा है .."); एटीएम सर्वर सर्वर = नया एटीएम सर्वर (); server.connectEtmServer (); }
यदि आप एडब्ल्यूटी / स्विंग का उपयोग कर रहे हैं, तो जीयूआई एक विशेष धागा पर चलती है जिसे इवेंट डिस्पैच थ्रेड (एडीटी) और सभी जीयूआई अपडेट उस थ्रेड पर चलना चाहिए। इसलिए आपको इसे इसके बजाय करने की आवश्यकता होगी:
SwingUtilities.invokeLater (नया रननाबल) {सार्वजनिक शून्य रन () {// कोड यहाँ जाता है}});
ध्यान रखें कि स्विंग एकल-थ्रेडेड है और धागा-सुरक्षित नहीं है
Comments
Post a Comment