2011-09-06 31 views
6

मैं जावा स्विंग करने के लिए नया हूँ और मेरे सवाल ईवेंट कतार और डिस्पैच धागे से संबंधित है।एकाधिक घटना डिस्पैच धागे

मैंने पढ़ा है कि यह कई ईवेंट कतार, AppContext उदाहरण प्रति प्रत्येक के लिए संभव है। इसी प्रकार इसका मतलब यह है कि प्रत्येक ऐपकॉन्टेक्स्ट इवेंट कतार का अपना इवेंट प्रेषण धागा होता है।

+2

बुनियादी सामान वहाँ एक कारण आप एक से अधिक EDTs चाहते हैं या इस सैद्धांतिक है होता है? –

+0

@Gnon मेरा इरादा यह जानना था कि कैसे केवल एक प्रेषण धागा मौजूद है, कई ईवेंट कतारों को संभालता है। – Poorna

+1

यदि आप इसे पढ़ने के लिए एक लिंक प्रदान कर सकते हैं जो मदद करेगा। :) –

उत्तर

3

यह जहाँ तक मुझे पता है कर रहा हूँ एक घटना प्रेषण धागा है करने के लिए ही संभव है।

जाहिर AppContext is not meant to be used by developers, हालांकि मैं इसके साथ वास्तव में परिचित नहीं हूँ।

+1

+1 ऐसा लगता है कि यह एप्लेट कंटेनरों के लिए है की तरह। – trashgod

+1

मुझे पता चला कि प्रत्येक एपकॉन्टेक्स्ट को आमतौर पर एक अलग थ्रेड समूह के लिए आवंटित किया जाता है, जिसकी अपनी कतार होती है, जो अप्रत्यक्ष रूप से कहती है कि इसका अपना ईडीटी – Poorna

+0

है। मुझे लगता है कि एक ही जेवीएम पर चल रहे दो ऐपकॉन्टेक्स आपको दो ईडीटी देंगे, हालांकि वे सबसे अधिक हैं उद्देश्य पूरी तरह से अलग कार्यक्रमों। –

1

1) मूल रूप से आप केवल

2) यदि आपको कोई शक है, यह परीक्षण करने के लिए संभव है पता करने के लिए अपने कोड (EDT पर किया जाएगा यदि सभी परिवर्तनों EDT पर किया जाना चाहिए), जरूरत

if (EventQueue.isDispatchThread()) { 

या (है कि एक ही है और सच रिटर्न अगर EDT पर है)

if (SwingUtilities.isEventDispatchThread()) { 
here

अधिक या here

+०१२३५१६४१०६१

3) पृष्ठभूमि कार्यों से सभी उत्पादन, invokeLater() में लपेटा जाना चाहिए के बारे में Concurency in Swing