जावा में, स्क्रीन पर प्रदर्शित होने वाले स्विंग घटकों के बाद, उन्हें केवल एक थ्रेड द्वारा संचालित किया जा सकता है जिसे इवेंट हैंडलिंग थ्रेड कहा जाता है . हम अपना कोड एक अलग ब्लॉक में लिख सकते हैं और इस ब्लॉक को ईवेंट . का संदर्भ दे सकते हैं हैंडलिंग धागा . स्विंग यूटिलिटीज कक्षा में दो महत्वपूर्ण स्थिर विधियाँ हैं, invokeAndWait() और invokeLater() ईवेंट . पर कोड के ब्लॉक के संदर्भ डालने के लिए उपयोग करने के लिए कतार ।
सिंटैक्स
सार्वजनिक स्थैतिक शून्य इनवोकएंडवेट(रननेबल डूरन) इंटरप्टेड एक्सेप्शन, इनवोकेशनटार्गेट एक्सेप्शन को फेंकता है सार्वजनिक स्थैतिक शून्य आह्वान बाद में (चलाने योग्य doRun)
पैरामीटर doRun चलाने योग्य . के उदाहरण का संदर्भ है इंटरफेस। इस मामले में, चलाने योग्य इंटरफ़ेस थ्रेड के निर्माता को पास नहीं किया जाएगा। चलाने योग्य इंटरफ़ेस का उपयोग केवल ईवेंट थ्रेड के प्रवेश बिंदु की पहचान करने के साधन के रूप में किया जा रहा है। जिस तरह एक नया पैदा हुआ धागा run() invoke का आह्वान करेगा , इवेंट थ्रेड रन () . का आह्वान करेगा विधि जब उसने कतार में लंबित अन्य सभी घटनाओं को संसाधित किया है। एक बाधित अपवाद फेंक दिया जाता है यदि थ्रेड जिसे invokeAndWait() . कहा जाता है या invokeLater() i लक्ष्य द्वारा निर्दिष्ट कोड के ब्लॉक के पूरा होने से पहले s बाधित हो गया। एक आमंत्रण लक्ष्य अपवाद यदि run() . के अंदर कोड द्वारा कोई न आया हुआ अपवाद फेंका जाता है, तो उसे फेंक दिया जाता है विधि।
उदाहरण
आयात करें जेपीनल पैनल =नया जेपीनल (); पैनल। जोड़ें (बटन); जेएफआरएएम एफ =नया जेएफआरएएम ("InvokeAndWaitMain"); f.setContentPane (पैनल); f.setSize (300, 100); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); System.out.println(Thread.currentThread().getName()+" 3 सेकंड के लिए स्लीप में जा रहा है"); कोशिश करें {थ्रेड.स्लीप (3000); } पकड़ (अपवाद ई) { } // लेबल परिवर्तन के लिए कोड तैयार करना रननेबल आर =नया रननेबल () {@ ओवरराइड पब्लिक शून्य रन () { सिस्टम। 10 सेकंड के लिए नींद में"); कोशिश करें {थ्रेड.स्लीप (10000); } पकड़ (अपवाद ई) { } बटन। सेटटेक्स्ट ("बटन टेक्स्ट "+ थ्रेड। करंट थ्रेड ()। getName ()); System.out.println ("बटन परिवर्तन समाप्त हो गया"); } }; System.out.println ("घटक परिवर्तन मुख्य धागे द्वारा घटना धागे पर डाले गए"); कोशिश करें {SwingUtilities.invokeAndWait(r); } कैच (इनवोकेशन टार्गेट एक्सेप्शन | इंटरप्टेड एक्सेप्शन ई) { ई.प्रिंटस्टैकट्रेस (); } System.out.println ("मुख्य धागा समाप्त हो गया"); }}आउटपुट