मौजूदा ईवेंट प्रेषण धागा अवरुद्ध है, और इसलिए स्विंग घटनाओं को पंप करने वाला एक और धागा बनाता है। यह तब संवाद की अवधि के लिए घटना प्रेषण धागा है।
स्विंग देशी ओएस विंडो संदेशों को पंप करने के लिए एक अलग देशी धागा बनाता है। यह एडब्ल्यूटी घटना धागे से अलग है।
Windows पर, जैसा कि आप देख इन धागे
"AWT-Windows" - the native UI thread
"AWT-EventQueue-0" - the current AWT event dispatch thread
संपादित करें: downvote सही है। यह सच नहीं है, कम से कम सभी मामलों में नहीं।
मॉडल संवाद अक्सर एडब्ल्यूटी कार्यक्रमों को पंप करने का ख्याल रखते हैं। यदि आप कोड
SwingUtilities.invokeAndWait(new Runnable()
{
public void run()
{
JOptionPane.showInputDialog("hello");
}
});
और फिर थ्रेड को देखते हुए तोड़ें, तो आप केवल एक EventQueue थ्रेड देखेंगे। जॉप्शनपेन पंप घटनाओं की शो() विधि स्वयं ही होती है।
फ्रेमवर्क जैसे Spin और फॉक्सट्रॉट एक ही दृष्टिकोण लेते हैं - वे आपको ईडीटी पर एक लंबी चल रही अवरोध विधि बनाने की अनुमति देते हैं, लेकिन घटनाओं को स्वयं पंप करके घटनाओं को बहते रहते हैं। स्विंग के लिए एकाधिक प्रेषण धागे होने के लिए संभव है (मुझे यकीन है कि स्विंग के पुराने संस्करणों के साथ यह मामला था) लेकिन अब यह मल्टीकोर सामान्य है, समेकन के मुद्दों, विशेष रूप से एक थ्रेड पर परिवर्तन सुनिश्चित करने के लिए अन्य धागे पर सही ढंग से प्रकाशित किया जाता है, इसका मतलब है कि कई ईडीटी का उपयोग मौजूदा कार्यान्वयन में बग पैदा करता है। Multiple Swing event-dispatch threads
जो चीजों को समझाता है। आपके उत्तर को ऊपर उठाया लेकिन किसी और ने दोनों को नीचे गिरा दिया: -/ –
मैंने इसे घटा दिया क्योंकि यह सच नहीं है। –
डाउनवोट सही है - मैंने अपनी प्रतिक्रिया अपडेट की है। – mdma