क्या जावा एक समय में एक से अधिक ईडीटी बनाने में सक्षम है?क्या दो या दो से अधिक ईवेंट प्रेषण धागा (ईडीटी) स्थापित करने का कोई तरीका है?
मैं ईडीटी स्थापित करने के साथ प्रयोग कर रहा हूं और यह "भारी कर्तव्य" पैनल की सामग्री को अद्यतन करने में कैसे काम करता है जिसमें संभावित रूप से एक दर्जन पैनलों को सैकड़ों घटकों के साथ एम्बेडेड किया जाता है। वर्तमान में मैं
public void run() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
panel.update();
}
});
}
मैं निम्नलिखित पदों को देखा है:
Measuring "busyness" of the event dispatching thread
How does the event dispatch thread work?
Java Event-Dispatching Thread explanation
http://en.wiki2.org/wiki/Event_dispatching_thread
और इसके आगे ।
मैं समझता हूं कि यदि एक दर्जन घटनाएं कहती हैं, तो एक ईडीटी को संभालना है, जावा में इन घटनाओं को समूह/प्राथमिकता देने के लिए पहले से ही एक आंतरिक शेड्यूलिंग तंत्र है।
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html"This is necessary because most Swing object methods are not "thread safe": invoking them from multiple threads risks thread interference or memory consistency errors."
तो के अनुसार क्या हुआ अगर मैं
विल जावा?
नीचे (नए Runnable() {...} .start() नया थ्रेड के साथ एक 2 EDT बनाने अपने आप मर्जवापस एक करने के लिए दो EDTs धागा सुरक्षा के डर से?
new Thread(new Runnable() {
public void run() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
panel.update();
}
});
}
}).start();
आपका दूसरा धागा ईडीटी नहीं है, बस टी।;) –
मुझे नहीं लगता कि आप एक ईडीटी बना सकते हैं। स्विंग अपने स्वयं के ईडीटी बनाता है। आप जितना चाहें उतने धागे बना सकते हैं (कुछ बड़ी सीमा तक), लेकिन वे ईडीटी नहीं होंगे। आपका उदाहरण कोड 'रननेबल' ऑब्जेक्ट बनाता है, लेकिन यह आपके थ्रेड में 'panel.update' नहीं चलाएगा। इसके बजाए, यह ऑब्जेक्ट स्विंग को दिया गया है, जो इसे कहीं से बचाता है, और फिर अंत में ईडीटी इसे पाता है और इसे चलाता है। – ajb
[एकाधिक इवेंट डिस्पैच थ्रेड] के संभावित डुप्लिकेट (http: // stackoverflow।कॉम/प्रश्न/7323306/एकाधिक-घटना-प्रेषण-धागे) – Jayan