SwingWorker
निम्नलिखित प्रयोजनों के लिए प्रयोग किया जाता है के बीच अंतर:जावा - SwingWorker और SwingUtilities.invokeLater()
- एक अलग सूत्र में लंबे समय से चल चल रहे कार्यों के लिए इतनी के रूप में किया जा रहा से अनुत्तरदायी जीयूआई को रोकने के लिए
done()
विधि के माध्यम से कार्य के अंत में लंबे समय तक चलने वाले कार्य द्वारा उत्पादित परिणामों के साथ जीयूआई अपडेट करने के लिए।publish()
औरprocess()
विधियों की सहायता से कार्य द्वारा उत्पादित और प्रकाशित इंटरमीडिएट परिणामों के साथ समय-समय पर जीयूआई अपडेट करने के लिए।
SwingUtilities.invokeLater()
ऊपर कार्य इस प्रकार कर सकते हैं:
- इसके बजाय EDT से
SwingWorker.execute()
विधि को क्रियान्वित करने के लिए, हमExecutorService.submit(new MyRunnable())
निष्पादित कर सकते हैं के रूप में यह भी एक और धागा जो लंबे समय से चल कार्य निष्पादित कर सकते हैं पैदा करेगा। - कार्य के अंत में जीयूआई अपडेट करने के लिए, हम कार्य के अंत में कोड डाल सकते हैं (
done()
मामले 1 के मामले में 0)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode())
। - कार्य के मध्य में जीयूआई अपडेट करने के लिए, हम कोड 1 (
process()
मामले 1 में विधि 0)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())
पर लिखा जा सकता है जहां हमनेpublish()
विधि 1 में विधि कहा था।
मैं इस सवाल क्योंकि समस्या सवाल Java - SwingWorker - Can we call one SwingWorker from other SwingWorker instead of EDT में निर्दिष्ट SwingUtilities.invokeLater()
द्वारा हल किया जा सकता है, लेकिन SwingWorker
मैं काफी यकीन है कि क्या 'सवाल' है नहीं कर रहा हूँ। – akf
@akf अगर आप निश्चित नहीं हैं, तो इसे छोड़ दें। सरल :) –
आप जिस समस्या का उल्लेख करते हैं वह स्विंगवर्कर का उपयोग कर हल करने योग्य है। मेरा जवाब वहां देखें। –