2009-03-20 15 views
6

मुझे ओपेरा 9.64 बिल्ड 10487 में जेवीएम 1.6.0_12 पर चल रहे एक एप्लेट का थ्रेड डंप मिला है - और यह तीन ईवेंट कतार दिखाता है! जहां तक ​​मुझे पता है कि जावा स्विंग इवेंट हैंडलिंग सिंगल थ्रेडेड है - क्या इस बदलाव ने हाल के अपडेट में किया है?क्या एक से अधिक एडब्ल्यूटी कार्यक्रम कतार हो सकती है?

मेरे समस्या यह है कि कई ईवेंट कतार गतिरोध पैदा करने के लिए करते हैं के बाद से मैं सिर्फ जीयूआई TreeLock की तुलना में कुछ अधिक ताले मिल गया है, है।

उत्तर

8

एक से अधिक नहीं हो सकता है, और यह ब्राउज़र पर निर्भर करता है। EventQueue documentation कहता है:

कुछ ब्राउज़र विभाजन एप्लेट अलग-अलग कोडों में अलग-अलग संदर्भों में हैं, और इन संदर्भों के बीच दीवारों को स्थापित करते हैं। इस तरह के परिदृश्य में प्रति संदर्भ एक EventQueue होगा। अन्य ब्राउज़र्स सभी एप्लेट्स को एक ही संदर्भ में रखते हैं, जिसका अर्थ यह है कि सभी एप्लेट्स के लिए केवल एक एकल, वैश्विक EventQueue होगा। यह व्यवहार कार्यान्वयन-निर्भर है।

+0

ठीक है, यह एक स्पष्टीकरण होगा। लेकिन मुझे केवल एक ऐपलेट मिला है, इसलिए यह केवल एक कोडबेस है। शायद ओपेरा प्रति फ्रेम एक थ्रेड शुरू होता है - क्योंकि यह जावा स्क्रिप्ट के लिए करता है ... – tigger

4

हां। आम तौर पर सिर्फ एक ही ToolkitToolkit.getDefaultToolkit के लिए होगा, लेकिन Toolkit.getSystemEventQueue से कई EventQueue रों (जो 1.2.2 से आप आमतौर पर अनुमतियां प्राप्त सफलतापूर्वक कॉल करने के लिए)। EventQueue को वापस करने के लिए निर्धारित करने के लिए ThreadGroup और ClassLoader एस पर आधारित जादू है।

एप्लेट उनकी उत्पत्ति और विन्यास पर निर्भर विभाजित हैं। वास्तव में यह कैसे किया जाता है कार्यान्वयन निर्भर है।

अब, क्या आप शायद देख रहे हैं अपने एप्लेट और सुरक्षित संदर्भ के लिए एक घटना कतार है। सुरक्षित संदर्भ प्लगइन से डायलॉग बॉक्स को ही संभालता है। प्रमाण पत्र और उस तरह की चीजों को स्वीकार करना। सुरक्षित संदर्भ इन्हें आपके एप्लेट संदर्भ में उपयोगकर्ता कोड से दूर रखता है।

2

इसके अतिरिक्त, स्विंग एक मॉडल डायलॉग दिखाते समय एक नया EventQueue (और थ्रेड आईआईआरसी) बनाता है, यह ईवेंट कतार सक्रिय है (पिछला एक "होल्ड" है) जब तक कि मोडल डायलॉग बंद न हो जाए।

हालांकि, मुझे यकीन नहीं है कि मोडल संवाद के कई स्तर (1 मुख्य कतार + 1 कतार प्रति संवाद, या सभी मुख्य कतार + 1 कतार सभी संवादों के लिए) होने पर क्या होता है।

2

"स्विंग एक नया EventQueue (और धागा IIRC) बनाता है जब आप एक मॉडल संवाद दिखाने" वास्तव में यह गलत है। मैंने कुछ समय पहले इस पर चर्चा की थी कि स्विंग लड़के और स्विंग के साथ ही विभिन्न स्रोत (विंडो/घटक) से आने वाली घटनाओं को फ़िल्टर करने के लिए मौजूदा ईवेंट कतार पर नया फ़िल्टर जोड़ता है। तो मोडल संवाद के लिए कोई नया धागा/ईक्यू नहीं बनाया गया है। आप मोडल डायलॉग खोलने से पहले और बाद में थ्रेड डंप प्राप्त करके और थ्रेड डंप प्राप्त करके इसे सत्यापित कर सकते हैं और एडब्ल्यूटी थ्रेड कॉल स्टैक की तुलना कर सकते हैं। कम से कम यह मानक जावा ऐप के साथ है। मैंने अभी तक एप्लेट केस की जांच नहीं की है।

संबंधित मुद्दे